{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.234860Z",
     "start_time": "2025-03-28T09:14:38.222204Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ],
   "outputs": [],
   "execution_count": 437
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.376420Z",
     "start_time": "2025-03-28T09:14:38.363253Z"
    }
   },
   "cell_type": "code",
   "source": [
    "path =  'ex1data1.txt'\n",
    "data = pd.read_csv(path, header=None, names=['Population', 'Profit'])\n",
    "data.head()"
   ],
   "id": "eda4777fc356a098",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   Population   Profit\n",
       "0      6.1101  17.5920\n",
       "1      5.5277   9.1302\n",
       "2      8.5186  13.6620\n",
       "3      7.0032  11.8540\n",
       "4      5.8598   6.8233"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.1101</td>\n",
       "      <td>17.5920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5.5277</td>\n",
       "      <td>9.1302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8.5186</td>\n",
       "      <td>13.6620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7.0032</td>\n",
       "      <td>11.8540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.8598</td>\n",
       "      <td>6.8233</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 438,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 438
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.515164Z",
     "start_time": "2025-03-28T09:14:38.501093Z"
    }
   },
   "cell_type": "code",
   "source": "data.describe()\n",
   "id": "e7379ef653c71673",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "       Population     Profit\n",
       "count   97.000000  97.000000\n",
       "mean     8.159800   5.839135\n",
       "std      3.869884   5.510262\n",
       "min      5.026900  -2.680700\n",
       "25%      5.707700   1.986900\n",
       "50%      6.589400   4.562300\n",
       "75%      8.578100   7.046700\n",
       "max     22.203000  24.147000"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>97.000000</td>\n",
       "      <td>97.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>8.159800</td>\n",
       "      <td>5.839135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.869884</td>\n",
       "      <td>5.510262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>5.026900</td>\n",
       "      <td>-2.680700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.707700</td>\n",
       "      <td>1.986900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>6.589400</td>\n",
       "      <td>4.562300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>8.578100</td>\n",
       "      <td>7.046700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>22.203000</td>\n",
       "      <td>24.147000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 439,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 439
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.654021Z",
     "start_time": "2025-03-28T09:14:38.578928Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))\n",
    "plt.show()"
   ],
   "id": "6b1376a9db4fbe7d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "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oO/b/mNDPW6sjyG/vPTSS3HHHXfEO97xjpg5c+aQ57385S+Pe++9N773ve9Fc3NznHLKKbFs2bJobW2dwmoZq2uuuSb+5//8n/HjH/84vvSlL8WmTZviqquuigMHDgz5GO/rwnfffffFjBkz4vrrrx/2PO/r/JckSdx2221x+eWXx/nnnx8RfmcXq8Gu9fHy/Xf2tEl9duKaa64Z+PcFF1wQl156aZx99tlx3333xW233TboY47vWU2SZNB28tc999wT11xzTSxYsGDIc84999w499xzBz6/9NJL4/nnn48vfvGL0dDQMBVlkkODvW9Hes+O5zHkh0OHDsUNN9wQR48eja9//evDnnvJJZdkLRC2bNmyeNWrXhVNTU3x1a9+dbJLZZze/va3D/z7/PPPj9e85jWxaNGieOihh4YNbN7Xhe1v//Zv453vfOeI80e9r/PfBz7wgfj5z38eP/3pT0845nd2cRnuWkcUxu9sPeVTbPr06XHBBRcMebdl3rx5J9x127VrV0ybNi1mz549FSUyQTt27IhHH3003vOe94z5sZdccom77AWmfzeFwd63x99VP/5xY30M+eHQoUPxtre9Ldrb2+ORRx4Z9o77YE466aS46KKLvNcLzPz582PRokXDXjfv68L2k5/8JLZu3Tqu39/e1/ll1apV8b3vfS/WrVsXZ5xxxkC739nFZ6hr3a9QfmcL5VPswIED8dxzz8X8+fMHPX7ppZcOrNrd74c//GG85jWvifLy8qkokQlas2ZNzJkzJ/7wD/9wzI/dvHnzkD8b5Kfa2tqYN29e1vv24MGDsWHDhrjsssuGfNxQ7/XhHkP6+n+5t7a2xqOPPjqum6VJksSWLVu81wvM7t274/nnnx/2unlfF7Z77rknXv3qV8eFF1445sd6X+eHJEniAx/4QDzwwAPx4x//OGpra7OO+51dPEa61hEF9jt7ypeWKzF/+qd/mqxfvz5pa2tLHn/88eSNb3xjMmPGjGT79u1JkiTJHXfckdx4440D57e1tSWVlZXJhz/84eRf/uVfknvuuScpLy9P/vf//t9pfQmMwZEjR5Izzzwz+djHPnbCseOv9X//7/89efDBB5Nf/OIXyT//8z8nd9xxRxIRyf333z+VJTMK+/fvTzZv3pxs3rw5iYjky1/+crJ58+aB1Ts/+9nPJlVVVckDDzyQPPPMM0ljY2Myf/78pLu7e+A5brzxxuSOO+4Y+Hzjxo1JWVlZ8tnPfjZ57rnnks9+9rPJtGnTkscff3zKvz5+Z7hrfejQoeTNb35zcsYZZyRbtmxJXnzxxYGPAwcODDzH8df6rrvuSn7wgx8kv/zlL5PNmzcn73rXu5Jp06Yl//iP/5jGl8j/N9y13r9/f/Knf/qnyWOPPZa0t7cn69atSy699NLkP/yH/+B9XYBG+j88SZKkq6srqaysTL7xjW8M+hze14Xh/e9/f1JVVZWsX78+6//ovr6+gXP8zi4OI13rQvudLZRPsre//e3J/Pnzk/Ly8mTBggXJ9ddfnzz77LMDx2+++ebkiiuuyHrM+vXrk/r6+uTkk09OFi9ePOQvCPLPww8/nEREsnXr1hOOHX+tP/e5zyVnn312csoppySnn356cvnllycPPfTQFFbLaPVvX3f8x80335wkyW+3WLnzzjuTefPmJRUVFUlDQ0PyzDPPZD3HFVdcMXB+v//1v/5Xcu655ybl5eXJy1/+cjdk8sBw17q9vX3QYxGRrFu3buA5jr/WH/rQh5IzzzwzOfnkk5OamppkxYoVyWOPPTb1XxxZhrvWfX19yYoVK5KampqkvLw8OfPMM5Obb745+dWvfpX1HN7XhWGk/8OTJEn++q//Ojn11FOTffv2Dfoc3teFYaj/o9esWTNwjt/ZxWGka11ov7Mz//+LAgAAAKaYOeUAAACQEqEcAAAAUiKUAwAAQEqEcgAAAEiJUA4AAAApEcoBAAAgJUI5AAAApEQoBwBOcMstt8R1112XN88DAMVKKAeAPHPLLbdEJpOJTCYT5eXlcdZZZ8Xtt98evb29aZc2pO3bt0cmk4ktW7Zktf+P//E/4t57702lJgAoBNPSLgAAONEb3vCGWLNmTRw6dCh+8pOfxHve857o7e2Nb3zjG2mXNiZVVVVplwAAeU1POQDkoYqKipg3b14sXLgw3vGOd8Q73/nO+O53vxsHDhyI1atXx5w5c+KUU06Jyy+/PDZt2jTwuPXr10cmk4mHHnooLrzwwjjllFPi4osvjmeeeWbgnLvuuit+//d/P+v1vvKVr8TixYuHrOcHP/hBXH755fGyl70sZs+eHW984xvjl7/85cDx2traiIior6+PTCYTV155ZUScOHx9tPX/6Ec/ite85jVRWVkZl112WWzdunUc30UAyH9COQAUgFNPPTUOHToUH/3oR+P++++P++67L55++ulYsmRJvP71r489e/Zknf+Rj3wkvvjFL8amTZtizpw58eY3vzkOHTo07tfv7e2N2267LTZt2hQ/+tGP4qSTToq3vOUtcfTo0YiIeOKJJyIi4tFHH40XX3wxHnjggUGfZ7T1f+ITn4gvfelL8eSTT8a0adPi3e9+97hrB4B8JpQDQJ574okn4tvf/nYsX748vvGNb8QXvvCFuOaaa+K8886Lb33rW3HqqafGPffck/WYO++8M66++uq44IIL4r777otf//rX8eCDD467hre+9a1x/fXXR11dXfz+7/9+3HPPPfHMM8/Ev/zLv0RERE1NTUREzJ49O+bNmxezZs064Tn6h9+Ppv7/9t/+W1xxxRVx3nnnxR133BGPPfZYvPTSS+OuHwDylVAOAHno//yf/xOnnXZanHLKKXHppZdGQ0NDrFq1Kg4dOhTLli0bOK+8vDyWLl0azz33XNbjL7300oF/z5o1K84999wTzhmLX/7yl/GOd7wjzjrrrJg5c+bAcPVf/epXY3qO0db/e7/3ewP/nj9/fkRE7Nq1a9z1A0C+stAbAOSh/l7x8vLyWLBgQZSXl8c//dM/RUREJpPJOjdJkhPaBtN/zkknnRRJkmQdG2lo+5ve9KZYuHBhfOtb34oFCxbE0aNH4/zzz4+DBw+O+mvqf83R1F9eXn5C3f1D5QGgmOgpB4A8NH369FiyZEksWrRoIKAuWbIkTj755PjpT386cN6hQ4fiySefjFe84hVZj3/88ccH/r137974xS9+ES9/+csj4rdDzXfu3JkVzI/fyuxYu3fvjueeey7+/M//PF73utfFK17xiti7d2/WOSeffHJERBw5cmTI5xlL/QBQKvSUA0CBmD59erz//e+Pj3zkIzFr1qw488wz4/Of/3z09fXFypUrs879i7/4i5g9e3bMnTs3PvGJT0R1dfXAKuhXXnlldHR0xOc///n4T//pP8UPfvCD+L//9//GzJkzB33d008/PWbPnh3f/OY3Y/78+fGrX/0q7rjjjqxz5syZE6eeemr84Ac/iDPOOCNOOeWUE7ZDG0v9AFAq9JQDQAH57Gc/G29961vjxhtvjFe96lWxbdu2ePjhh+P0008/4bwPfvCD8epXvzpefPHF+N73vjfQm/2KV7wivv71r8df/uVfxoUXXhhPPPFE3H777UO+5kknnRTf+c534qmnnorzzz8/PvzhD8cXvvCFrHOmTZsWX/3qV+Ov//qvY8GCBXHttddOqH4AKBWZ5PhJZQBAwVq/fn0sX7489u7dGy972cvSLgcAGIGecgAAAEiJUA4AAAApMXwdAAAAUqKnHAAAAFIilAMAAEBKhHIAAABIiVAOAAAAKRHKAQAAICVCOQAAAKREKAcAAICUCOUAAACQEqEcAAAAUvL/AJ4rmXUNE3ecAAAAAElFTkSuQmCC\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 440
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.701056Z",
     "start_time": "2025-03-28T09:14:38.686541Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def computeCost(X, y, theta):\n",
    "    inner = np.power(((X * theta.T) - y), 2)\n",
    "    return np.sum(inner) / (2 * len(X))"
   ],
   "id": "d75a2a1bcac685db",
   "outputs": [],
   "execution_count": 441
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.730880Z",
     "start_time": "2025-03-28T09:14:38.721187Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data.insert(0, 'Ones', 1)\n",
    "data.head()"
   ],
   "id": "6c68bdbb42d58160",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   Ones  Population   Profit\n",
       "0     1      6.1101  17.5920\n",
       "1     1      5.5277   9.1302\n",
       "2     1      8.5186  13.6620\n",
       "3     1      7.0032  11.8540\n",
       "4     1      5.8598   6.8233"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Ones</th>\n",
       "      <th>Population</th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>6.1101</td>\n",
       "      <td>17.5920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5.5277</td>\n",
       "      <td>9.1302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>8.5186</td>\n",
       "      <td>13.6620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0032</td>\n",
       "      <td>11.8540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>5.8598</td>\n",
       "      <td>6.8233</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 442,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 442
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.793360Z",
     "start_time": "2025-03-28T09:14:38.778618Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# set X (training data) and y (target variable)\n",
    "cols = data.shape[1]\n",
    "X = data.iloc[:,0:cols-1]#X是所有行，去掉最后一列\n",
    "y = data.iloc[:,cols-1:cols]#X是所有行，最后一列"
   ],
   "id": "559bcf3ec7b6e430",
   "outputs": [],
   "execution_count": 443
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.839277Z",
     "start_time": "2025-03-28T09:14:38.825243Z"
    }
   },
   "cell_type": "code",
   "source": "X.head()#head()是观察前5行",
   "id": "6906af72a0d973d7",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   Ones  Population\n",
       "0     1      6.1101\n",
       "1     1      5.5277\n",
       "2     1      8.5186\n",
       "3     1      7.0032\n",
       "4     1      5.8598"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Ones</th>\n",
       "      <th>Population</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>6.1101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5.5277</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>8.5186</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>5.8598</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 444,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 444
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.885396Z",
     "start_time": "2025-03-28T09:14:38.870795Z"
    }
   },
   "cell_type": "code",
   "source": "y.head()\n",
   "id": "e1c5026c557db4b1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "    Profit\n",
       "0  17.5920\n",
       "1   9.1302\n",
       "2  13.6620\n",
       "3  11.8540\n",
       "4   6.8233"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.5920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>9.1302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13.6620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.8540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.8233</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 445,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 445
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:38.963311Z",
     "start_time": "2025-03-28T09:14:38.948714Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X = np.matrix(X.values)\n",
    "y = np.matrix(y.values)\n",
    "theta = np.matrix(np.array([0,0]))"
   ],
   "id": "8bfd125cf7e857c9",
   "outputs": [],
   "execution_count": 446
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.008913Z",
     "start_time": "2025-03-28T09:14:39.003911Z"
    }
   },
   "cell_type": "code",
   "source": "theta",
   "id": "8acd395f40946c9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[0, 0]])"
      ]
     },
     "execution_count": 447,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 447
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.069716Z",
     "start_time": "2025-03-28T09:14:39.053307Z"
    }
   },
   "cell_type": "code",
   "source": "X.shape, theta.shape, y.shape\n",
   "id": "3c0630240b6fa178",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((97, 2), (1, 2), (97, 1))"
      ]
     },
     "execution_count": 448,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 448
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.100304Z",
     "start_time": "2025-03-28T09:14:39.085732Z"
    }
   },
   "cell_type": "code",
   "source": "computeCost(X, y, theta)\n",
   "id": "4e25721c023eb0c1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32.072733877455676"
      ]
     },
     "execution_count": 449,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 449
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.163865Z",
     "start_time": "2025-03-28T09:14:39.159357Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def gradientDescent(X, y, theta, alpha, iters):\n",
    "    temp = np.matrix(np.zeros(theta.shape))\n",
    "    parameters = int(theta.ravel().shape[1])\n",
    "    cost = np.zeros(iters)\n",
    "\n",
    "    for i in range(iters):\n",
    "        error = (X * theta.T) - y\n",
    "\n",
    "        for j in range(parameters):\n",
    "            term = np.multiply(error, X[:,j])\n",
    "            temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))\n",
    "\n",
    "        theta = temp\n",
    "        cost[i] = computeCost(X, y, theta)\n",
    "\n",
    "    return theta, cost"
   ],
   "id": "48a9ba170350e1d5",
   "outputs": [],
   "execution_count": 450
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.193955Z",
     "start_time": "2025-03-28T09:14:39.179874Z"
    }
   },
   "cell_type": "code",
   "source": [
    "alpha = 0.01\n",
    "iters = 1000"
   ],
   "id": "db9e40aacb989c93",
   "outputs": [],
   "execution_count": 451
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.256421Z",
     "start_time": "2025-03-28T09:14:39.210085Z"
    }
   },
   "cell_type": "code",
   "source": [
    "g, cost = gradientDescent(X, y, theta, alpha, iters)\n",
    "g"
   ],
   "id": "e3bee3e9325c80ec",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[-3.24140214,  1.1272942 ]])"
      ]
     },
     "execution_count": 452,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 452
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.287641Z",
     "start_time": "2025-03-28T09:14:39.273131Z"
    }
   },
   "cell_type": "code",
   "source": "computeCost(X, y, g)\n",
   "id": "a2bf0afec8768597",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.515955503078914"
      ]
     },
     "execution_count": 453,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 453
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.381245Z",
     "start_time": "2025-03-28T09:14:39.303658Z"
    }
   },
   "cell_type": "code",
   "source": [
    "x = np.linspace(data.Population.min(), data.Population.max(), 100)\n",
    "f = g[0, 0] + (g[0, 1] * x)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(x, f, 'r', label='Prediction')\n",
    "ax.scatter(data.Population, data.Profit, label='Traning Data')\n",
    "ax.legend(loc=2)\n",
    "ax.set_xlabel('Population')\n",
    "ax.set_ylabel('Profit')\n",
    "ax.set_title('Predicted Profit vs. Population Size')\n",
    "plt.show()"
   ],
   "id": "271e79eb54a5c4d7",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+UAAAK7CAYAAACUMC65AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAACiJklEQVR4nOzdeVyVZd7H8c8BEdQQ00Qw16xMs83Ksk2tLK3MsqbV0vZsX8xSnxlzJteyskXbrcb2Mmdsytax1bJymsmspkxtwyxNNBNUuJ8/7gFFQQGB+wCf9+vF64mL+5zz45wzPnzPdV2/KxYEQYAkSZIkSapyCVEXIEmSJElSbWUolyRJkiQpIoZySZIkSZIiYiiXJEmSJCkihnJJkiRJkiJiKJckSZIkKSKGckmSJEmSImIolyRJkiQpIoZySZIkSZIiYiiXpBru4YcfJhaLFX7VqVOHFi1acM455/DDDz9USQ1t2rRh4MCBhd/PmjWLWCzGrFmzynQ/7733HjfeeCMrVqyo0PoABg4cSJs2bbZ6Xffu3Ys8n/Xq1WOvvfbi9ttvJz8/v0Jrev3119lvv/1o0KABsViM6dOnF76eixYtKrzu8ccf5/bbb6/Qx65oAwcOLPK8JScn0759e0aMGEFOTk7U5QGbv0/LYvTo0UyfPn2z8fK+1ytCEAQ8+eSTHHrooaSnp5OSkkKLFi04+uijeeCBB4pcG4vFuPHGG6u8RkmSoVySao0pU6Ywe/ZsXn31VS644AKeeOIJDj30UFavXl3ltXTu3JnZs2fTuXPnMt3uvffeY+TIkZUSystip512Yvbs2cyePZunnnqKHXfckauvvpqhQ4dW2GMEQcApp5xCUlISf//735k9ezbdunXj2GOPZfbs2WRmZhZeWx1COUC9evUKn7fp06dzwAEH8Oc//5kBAwZEXdo2KymUl/e9XhGGDh3K6aefTocOHXjggQd46aWXuOmmm2jWrBl/+9vfilw7e/Zszj///CqvUZIEdaIuQJJUNTp16sR+++0HQI8ePcjLy+Mvf/kL06dP58wzzyz2Nr///jv169ev8FoaNmzIgQceWOH3W1Xq1atXpP7evXuz2267cdddd3HTTTeRlJS02W2CICAnJ4d69eqV6jF+/PFHli9fzoknnsgRRxxR5GdNmzbdtl8gIgkJCZs9b4sWLeLpp5/m1ltvZccdd4ywusoR1Xt9zZo13H777Zx99tncd999RX42cODAzVZ1VOf/PUpSdedMuSTVUgV/hC9evBgI/1Dfbrvt+PTTTznqqKNITU0tDINr167lpptuYrfddiM5OZmmTZtyzjnn8PPPPxe5z3Xr1jFkyBAyMjKoX78+hxxyCHPmzNnssUta0vvBBx/Qp08fmjRpQkpKCu3ateOqq64C4MYbb+S6664DoG3btoXLoDe+j6eeeoquXbvSoEEDtttuO44++mj+9a9/bfb4Dz/8MO3btyc5OZkOHTrw6KOPlus5LJCUlMS+++7L77//XvicxGIxLrvsMu655x46dOhAcnIyjzzyCADvvPMORxxxBKmpqdSvX5+DDjqIf/zjH4X3d+ONN9KiRQsArr/+emKxWOHS+k2Xr3fv3p1//OMfLF68uMjy8JKccMIJtG7dutil9gcccECRGd1nnnmGAw44gLS0NOrXr89OO+3Eueeeu03P1aY2fR9+++239O/fn/T09MLXZ8KECUXqXbRoEbFYjPHjxzNq1ChatWpFSkoK++23H6+//nqR+y9pW8KNN964xecJICcnh2uvvZa9996btLQ0GjduTNeuXTebZY7FYqxevZpHHnmk8Pnv3r07UPJ7/e9//ztdu3alfv36pKam0rNnT2bPnl1sjZ999hmnn346aWlpNGvWjHPPPZfs7Owt1r569Wpyc3OLrKjYWEJC0T8BN12+3qZNmyLvp42/Nv5dvvrqK84444wir9fdd9+9xdokSUU5Uy5JtdTXX38NFJ11Xbt2LccffzwXXXQRN9xwA+vXryc/P5++ffvy9ttvM2TIEA466CAWL17MiBEj6N69Ox999FHh7O8FF1zAo48+yuDBg+nZsyfz5s2jX79+rFq1aqv1vPzyy/Tp04cOHTpw66230qpVKxYtWsQrr7wCwPnnn8/y5cu58847mTZtWmHY6NixIxAuH/6///s/zjnnHP7v//6PtWvXcvPNN3PooYcyZ86cwusefvhhzjnnHPr27cuECRPIzs7mxhtvJDc3d7OgUhYLFiygTp06bL/99oVj06dP5+233+ZPf/oTGRkZpKen8+abb9KzZ0/23HNPHnzwQZKTk5k0aRJ9+vThiSee4NRTT+X8889nr732ol+/flx++eWcccYZJCcnF/u4kyZN4sILL2TBggU8//zzW63z3HPPpW/fvrzxxhsceeSRheNffPEFc+bM4Y477gDC5cynnnoqp556KjfeeCMpKSksXryYN954o9zPUXE2fh/+/PPPHHTQQaxdu5a//OUvtGnThhdeeIHBgwezYMECJk2aVOS2d911F61bty7czz9+/Hh69+7Nm2++SdeuXbe5ttzcXJYvX87gwYPZcccdWbt2La+99hr9+vVjypQpnH322UD4XB1++OH06NGDP/7xj0A4Q16Sxx9/nDPPPJOjjjqKJ554gtzcXMaPH0/37t15/fXXOeSQQ4pcf9JJJ3Hqqady3nnn8emnnxZuk3jooYdKfIwddtiBnXfemUmTJpGens4xxxxD+/btt/pBRIHnn3+e3Nzcwu/z8/O5+OKL+eabb2jVqhUA8+fP56CDDqJVq1ZMmDCBjIwMXn75Za644gp++eUXRowYUarHkqRaL5Ak1WhTpkwJgOD9998P1q1bF6xatSp44YUXgqZNmwapqanBkiVLgiAIggEDBgRA8NBDDxW5/RNPPBEAwXPPPVdk/MMPPwyAYNKkSUEQBMHnn38eAMHVV19d5LrHHnssAIIBAwYUjv3zn/8MgOCf//xn4Vi7du2Cdu3aBWvWrCnxd7n55psDIFi4cGGR8W+//TaoU6dOcPnllxcZX7VqVZCRkRGccsopQRAEQV5eXtC8efOgc+fOQX5+fuF1ixYtCpKSkoLWrVuX+NgFunXrFuy+++7BunXrgnXr1gU//vhjcMMNNwRA8Ic//KHwOiBIS0sLli9fXuT2Bx54YJCenh6sWrWqcGz9+vVBp06dghYtWhTWtXDhwgAIbr755iK3L3g9N34Ojj322FLVHgRBsG7duqBZs2bBGWecUWR8yJAhQd26dYNffvklCIIguOWWWwIgWLFiRanud2sGDBgQNGjQoPB5+/nnn4OJEycGsVgs2H///YMgCAqfxw8++KDIbQcNGhTEYrHgyy+/DIJgw3PTvHnzIu+XlStXBo0bNw6OPPLIIo9b3HMzYsSIYNM/g1q3bl3kfbqp9evXB+vWrQvOO++8YJ999inyswYNGhR7203f6wXvwT322CPIy8srvG7VqlVBenp6cNBBB21W4/jx44vc5yWXXBKkpKQUeQ8XZ86cOUGrVq0CIACC1NTU4LjjjgseffTRzW4LBCNGjCjxvi677LKgTp06wYsvvlg4dvTRRwctWrQIsrOzN7s2JSVls/e+JKl4Ll+XpFriwAMPJCkpidTUVI477jgyMjJ46aWXaNasWZHrTjrppCLfv/DCCzRq1Ig+ffqwfv36wq+9996bjIyMwqWs//znPwE2259+yimnUKfOlhdm/fe//2XBggWcd955pKSklPl3e/nll1m/fj1nn312kRpTUlLo1q1bYY1ffvklP/74I2eccUaRGcPWrVtz0EEHlfrxPvvsM5KSkkhKSqJ58+ZMmDCBM888k/vvv7/IdYcffniRmfPVq1fzwQcfcPLJJ7PddtsVjicmJnLWWWfx/fff8+WXX5b59y+LOnXq0L9/f6ZNm1a4BDovL4+//vWv9O3blyZNmgCw//77A+Hr9/TTT1dIp/7Vq1cXPm9Nmzblqquuonfv3oUz/G+88QYdO3akS5cuRW43cOBAgiDYbJa+X79+Rd4vqamp9OnTh7feeou8vLxtrhfCJfwHH3ww2223HXXq1CEpKYkHH3yQzz//vFz3V/AePOuss4qszNhuu+046aSTeP/99/n999+L3Ob4448v8v2ee+5JTk4OS5cu3eJj7b///nz99dfMnDmTYcOG0bVrV15//XXOPvtsjj/+eIIgKFXNY8eO5a677uKee+6hd+/eQLi0//XXX+fEE0+kfv36Rf53d8wxx5CTk8P7779fqvuXpNrO5euSVEs8+uijdOjQgTp16tCsWbNi95rWr19/s2W3P/30EytWrKBu3brF3u8vv/wCwLJlywDIyMgo8vM6deoUBr2SFOzDLthHXVY//fQTsCFIbqog/JRUY8HYxseMbUm7du148sknicVipKSk0LZt22Ib4m36HP/6668EQVDsc9+8efMiNVamc889lwkTJvDkk09y0UUX8fLLL5OVlcU555xTeM1hhx3G9OnTueOOOzj77LPJzc1l9913Z/jw4Zx++unletx69erx1ltvAZCcnEzr1q2LvN+WLVtW7P7vkp6bkl7HtWvX8ttvv5GWllauOgtMmzaNU045hT/84Q9cd911ZGRkUKdOHSZPnrzFpeNbUvA7lPQeyM/P59dffy3yftr0fz8FWxnWrFmz1cdLSkri6KOP5uijjy58/JNPPpkXXniBl156iWOOOWaLt586dSrDhg3jT3/6E+edd16R32P9+vXceeed3HnnncXetuDfBknSlhnKJamW6NChQ2H39ZIUt990hx12oEmTJsycObPY26SmpgIbgsOSJUuKdNFev379VoNmwb7277//fovXlWSHHXYA4Nlnn6V169YlXrdxjZsqbqwkBU3FtmbT53P77bcnISGBrKysza798ccfgQ2/S2UqmI2eMmUKF110EVOmTKF58+YcddRRRa7r27cvffv2JTc3l/fff58xY8Zwxhln0KZNm3Lt2U5ISNji89akSZMyPTclvY5169YtXImQkpJSZG90gdIExqlTp9K2bVueeuqpIq9lcfdXWgXvwZJ+z4SEhCKrKypakyZNuOqqq5g1axbz5s3bYih/9dVXOffccxk4cCAjR44s8rPtt9++cIXHpZdeWuzt27ZtW6G1S1JN5fJ1SdIWHXfccSxbtoy8vDz222+/zb7at28PUNht+rHHHity+6effpr169dv8TF23XVX2rVrx0MPPbTFwFPSDOHRRx9NnTp1WLBgQbE1FgTB9u3bk5mZyRNPPFFk6e7ixYt57733SveEbIMGDRpwwAEHMG3atCK/Q35+PlOnTqVFixbsuuuuZb7f5OTkUs2abuycc87hgw8+4J133mHGjBkMGDCAxMTEEu+/W7dujBs3DqDYjvYV4YgjjmD+/PnMnTu3yPijjz5KLBajR48eRcanTZtGTk5O4ferVq1ixowZHHrooYW/S5s2bVi6dGnhagoIGxq+/PLLW60nFotRt27dIoF8yZIlm3Vfh9K/Bu3bt2fHHXfk8ccfL/IeXL16Nc8991xhR/ZttW7duhI/DCtYel+wAqE4n3zyCSeddBKHH374ZkeqQbiqpkePHvzrX/9izz33LPZ/c1tbISNJCjlTLknaotNOO43HHnuMY445hiuvvJIuXbqQlJTE999/zz//+U/69u3LiSeeSIcOHejfvz+33347SUlJHHnkkcybN49bbrlli52oC9x999306dOHAw88kKuvvppWrVrx7bff8vLLLxcG/T322AOAiRMnMmDAAJKSkmjfvj1t2rThz3/+M8OHD+ebb76hV69ebL/99vz000/MmTOHBg0aMHLkSBISEvjLX/7C+eefz4knnsgFF1zAihUruPHGG4tdCl0ZxowZQ8+ePenRoweDBw+mbt26TJo0iXnz5vHEE0+Uujv2xvbYYw+mTZvG5MmT2Xfffbc6Iw1w+umnc80113D66aeTm5vLwIEDi/z8T3/6E99//z1HHHEELVq0YMWKFUycOJGkpCS6detWeF2dOnXo1q3bZkeRlcfVV1/No48+yrHHHsuf//xnWrduzT/+8Q8mTZrEoEGDNvvAIjExkZ49e3LNNdeQn5/PuHHjWLlyZZFZ3VNPPZU//elPnHbaaVx33XXk5ORwxx13lGrP+XHHHce0adO45JJLOPnkk/nuu+/4y1/+QmZmJl999VWRa/fYYw9mzZrFjBkzyMzMJDU1tfADq40lJCQwfvx4zjzzTI477jguuugicnNzufnmm1mxYgVjx44t57NXVHZ2Nm3atOEPf/gDRx55JC1btuS3335j1qxZTJw4kQ4dOtCvX79ib7ty5UqOOeYY6tWrx+DBg/noo4+K/Lxjx440bNiQiRMncsghh3DooYcyaNAg2rRpw6pVq/j666+ZMWNGhXfql6QaK9I2c5KkSlfQrfvDDz/c4nUF3bGLs27duuCWW24J9tprryAlJSXYbrvtgt122y246KKLgq+++qrwutzc3ODaa68N0tPTg5SUlODAAw8MZs+evVlX6+K6rwdBEMyePTvo3bt3kJaWFiQnJwft2rXbrJv70KFDg+bNmwcJCQmb3cf06dODHj16BA0bNgySk5OD1q1bByeffHLw2muvFbmPBx54INhll12CunXrBrvuumvw0EMPldile1MF3de3BgguvfTSYn/29ttvB4cffnjQoEGDoF69esGBBx4YzJgxo8g1Zem+vnz58uDkk08OGjVqFMRisc26ipfkjDPOCIDg4IMP3uxnL7zwQtC7d+9gxx13DOrWrRukp6cHxxxzTPD2229v9nt269Ztq4+1pffXxhYvXhycccYZQZMmTYKkpKSgffv2wc0331ykU3nBczNu3Lhg5MiRQYsWLYK6desG++yzT/Dyyy9vdp8vvvhisPfeewf16tULdtppp+Cuu+4qdff1sWPHBm3atAmSk5ODDh06BPfff3+xt/3kk0+Cgw8+OKhfv36R56Sk9/r06dODAw44IEhJSQkaNGgQHHHEEcG7775b5JqCx/n555+LjBf3HthUbm5ucMsttwS9e/cOWrVqFSQnJwcpKSlBhw4dgiFDhgTLli0rcj0bdV8veH5L+tr4d1m4cGFw7rnnBjvuuGOQlJQUNG3aNDjooIOCm266qcTaJElFxYKglK03JUmS4sCiRYto27YtN998M4MHD466HEmStol7yiVJkiRJioihXJIkSZKkiLh8XZIkSZKkiDhTLkmSJElSRAzlkiRJkiRFxFAuSZIkSVJE6kRdQGXLz8/nxx9/JDU1lVgsFnU5kiRJkqQaLggCVq1aRfPmzUlI2PJceI0P5T/++CMtW7aMugxJkiRJUi3z3Xff0aJFiy1eU+NDeWpqKhA+GQ0bNoy4GkmSJElSTbdy5UpatmxZmEe3pMaH8oIl6w0bNjSUS5IkSZKqTGm2UNvoTZIkSZKkiBjKJUmSJEmKiKFckiRJkqSIRLqnfMyYMUybNo0vvviCevXqcdBBBzFu3Djat29feM3AgQN55JFHitzugAMO4P3336+wOoIgYP369eTl5VXYfarmSExMpE6dOh6pJ0mSJKnCRRrK33zzTS699FL2339/1q9fz/DhwznqqKOYP38+DRo0KLyuV69eTJkypfD7unXrVlgNa9euJSsri99//73C7lM1T/369cnMzKzQ954kSZIkRRrKZ86cWeT7KVOmkJ6ezscff8xhhx1WOJ6cnExGRkaFP35+fj4LFy4kMTGR5s2bU7duXWdDVUQQBKxdu5aff/6ZhQsXsssuu5CQ4K4PSZIkSRUjro5Ey87OBqBx48ZFxmfNmkV6ejqNGjWiW7dujBo1ivT09GLvIzc3l9zc3MLvV65cWeLjrV27lvz8fFq2bEn9+vUr4DdQTVSvXj2SkpJYvHgxa9euJSUlJeqSJEmSJNUQcTPlFwQB11xzDYcccgidOnUqHO/duzePPfYYb7zxBhMmTODDDz/k8MMPLxK8NzZmzBjS0tIKv1q2bLnVx3bmU1vje0SSJElSZYgFQRBEXQTApZdeyj/+8Q/eeecdWrRoUeJ1WVlZtG7dmieffJJ+/fpt9vPiZspbtmxJdnY2DRs2LHJtTk4OCxcupG3bts5+aot8r0iSJEkqrZUrV5KWllZsDt1UXCxfv/zyy/n73//OW2+9tcVADpCZmUnr1q356quviv15cnIyycnJlVGmJEmSJEkVKtI1uUEQcNlllzFt2jTeeOMN2rZtu9XbLFu2jO+++47MzMwqqFA33ngje++9d+H3AwcO5IQTTtim+6yI+5AkSZKkmiDSUH7ppZcydepUHn/8cVJTU1myZAlLlixhzZo1APz2228MHjyY2bNns2jRImbNmkWfPn3YYYcdOPHEE6MsPXIDBw4kFosRi8VISkpip512YvDgwaxevbpSH3fixIk8/PDDpbp20aJFxGIxPvnkk3LfhyRJkiTVZJEuX588eTIA3bt3LzI+ZcoUBg4cSGJiIp9++imPPvooK1asIDMzkx49evDUU0+RmpoaQcXxpeD89nXr1vH2229z/vnns3r16sLntcC6detISkqqkMdMS0uLi/uQJEmSpJog8uXrxX0NHDgQCI+ievnll1m6dClr165l8eLFPPzww6XqqL4NRcHq1VX/VY5+ewXnt7ds2ZIzzjiDM888k+nTpxcuOX/ooYfYaaedSE5OJggCsrOzufDCC0lPT6dhw4Ycfvjh/Pvf/y5yn2PHjqVZs2akpqZy3nnnkZOTU+Tnmy49z8/PZ9y4cey8884kJyfTqlUrRo0aBVC4HWGfffYhFosVfviy6X3k5uZyxRVXkJ6eTkpKCocccggffvhh4c9nzZpFLBbj9ddfZ7/99qN+/focdNBBfPnll2V+ziRJkiQpnnjO06Z+/x22267qv37/fZtLr1evHuvWrQPg66+/5umnn+a5554rXD5+7LHHsmTJEl588UU+/vhjOnfuzBFHHMHy5csBePrppxkxYgSjRo3io48+IjMzk0mTJm3xMYcOHcq4ceP44x//yPz583n88cdp1qwZAHPmzAHgtddeIysri2nTphV7H0OGDOG5557jkUceYe7cuey8884cffTRhXUVGD58OBMmTOCjjz6iTp06nHvuueV+riRJkiQpHsRF93Vtuzlz5vD4449zxBFHALB27Vr++te/0rRpUwDeeOMNPv30U5YuXVrYnf6WW25h+vTpPPvss1x44YXcfvvtnHvuuZx//vkA3HTTTbz22mubzZYXWLVqFRMnTuSuu+5iwIABALRr145DDjkEoPCxmzRpQkZGRrH3UbDc/uGHH6Z3794A3H///bz66qs8+OCDXHfddYXXjho1im7dugFwww03cOyxx5KTk+MRZZIkSZKqLUP5purXh99+i+Zxy+iFF15gu+22Y/369axbt46+ffty5513MmnSJFq3bl0YigE+/vhjfvvtN5o0aVLkPtasWcOCBQsA+Pzzz7n44ouL/Lxr167885//LPbxP//8c3Jzcws/CCiPBQsWsG7dOg4++ODCsaSkJLp06cLnn39e5No999yz8L8Luu8vXbqUVq1alfvxJUmSJClKhvJNxWLQoEHUVZRKjx49mDx5MklJSTRv3rxIM7cGm/wO+fn5ZGZmMmvWrM3up1GjRuV6/Hr16pXrdhsL/reXPhaLbTa+6djGv1/Bz/Lz87e5BkmSJEmKinvKq7EGDRqw884707p16612V+/cuTNLliyhTp067LzzzkW+dthhBwA6dOjA+++/X+R2m36/sV122YV69erx+uuvF/vzunXrApCXl1fifey8887UrVuXd955p3Bs3bp1fPTRR3To0GGLv5MkSZIkVXfOlNcSRx55JF27duWEE05g3LhxtG/fnh9//JEXX3yRE044gf32248rr7ySAQMGsN9++3HIIYfw2GOP8dlnn7HTTjsVe58pKSlcf/31DBkyhLp163LwwQfz888/89lnn3HeeeeRnp5OvXr1mDlzJi1atCAlJWWz49AaNGjAoEGDuO6662jcuDGtWrVi/Pjx/P7775x33nlV8dRIkiRJUmQM5bVELBbjxRdfZPjw4Zx77rn8/PPPZGRkcNhhhxV2Sz/11FNZsGAB119/PTk5OZx00kkMGjSIl19+ucT7/eMf/0idOnX405/+xI8//khmZmbhvvQ6depwxx138Oc//5k//elPHHroocUunx87diz5+fmcddZZrFq1iv3224+XX36Z7bffvlKeC0mSJEnVT15+wJyFy1m6Kof01BS6tG1MYkJs6zeMc7EgKMcB2dXIypUrSUtLIzs7m4YNGxb5WU5ODgsXLqRt27Z28NYW+V6RJEmSojNzXhYjZ8wnK3vDyVCZaSmM6NORXp0yI6yseFvKoZtyT7kkSZIkKW7NnJfFoKlziwRygCXZOQyaOpeZ87IiqqxiGMolSZIkSXEpLz9g5Iz5FLe8u2Bs5Iz55OVX3wXghnJJkiRJUlyas3D5ZjPkGwuArOwc5ixcXnVFVTBDuSRJkiQpLi1dVXIgL8918chQLkmSJEmKS+mppWuyXNrr4pGhXJIkSZIUl7q0bUxmWgolHXwWI+zC3qVt46osq0IZyiVJkiRJcSkxIcaIPh0BNgvmBd+P6NOxWp9XbiiXJEmSJMWtXp0ymdy/MxlpRZeoZ6SlMLl/57g8p7ws6kRdgCRJkiRJW9KrUyY9O2YwZ+Fylq7KIT01XLJenWfICxjKVWqxWIznn3+eE044IepSJEmSJNUyiQkxurZrEnUZFc7l69VMLBbb4tfAgQMr7bGzsrLo3bt3pd1/gY1/nwYNGrDLLrswcOBAPv744zLfV/fu3bnqqqsqvkhJkiRJqgCG8gqQlx8we8Ey/vbJD8xesIy8/KDSHisrK6vw6/bbb6dhw4ZFxiZOnFjk+nXr1lXYY2dkZJCcnFxh97clU6ZMISsri88++4y7776b3377jQMOOIBHH320Sh5fkiRJkqqCoXwbzZyXxSHj3uD0+9/nyic/4fT73+eQcW8wc15WpTxeRkZG4VdaWhqxWKzw+5ycHBo1asTTTz9N9+7dSUlJYerUqSxbtozTTz+dFi1aUL9+ffbYYw+eeOKJIvfbvXt3rrjiCoYMGULjxo3JyMjgxhtvLHJNLBZj+vTpACxatIhYLMa0adPo0aMH9evXZ6+99mL27NlFbnP//ffTsmVL6tevz4knnsitt95Ko0aNtvp7NmrUiIyMDNq0acNRRx3Fs88+y5lnnslll13Gr7/+CrDV32vgwIG8+eabTJw4sXDmfdGiReTl5XHeeefRtm1b6tWrR/v27Tf7MEOSJEmSqoKhfBvMnJfFoKlzycrOKTK+JDuHQVPnVlow35rrr7+eK664gs8//5yjjz6anJwc9t13X1544QXmzZvHhRdeyFlnncUHH3xQ5HaPPPIIDRo04IMPPmD8+PH8+c9/5tVXX93iYw0fPpzBgwfzySefsOuuu3L66aezfv16AN59910uvvhirrzySj755BN69uzJqFGjyv17XX311axataqwpq39XhMnTqRr165ccMEFhSsJWrZsSX5+Pi1atODpp59m/vz5/OlPf2LYsGE8/fTT5a5NkiRJksrDRm/llJcfMHLGfIpbqB4Qnpk3csZ8enbMqPKOgFdddRX9+vUrMjZ48ODC/7788suZOXMmzzzzDAcccEDh+J577smIESMA2GWXXbjrrrt4/fXX6dmzZ4mPNXjwYI499lgARo4cye67787XX3/Nbrvtxp133knv3r0LH3vXXXflvffe44UXXijX77XbbrsB4Sw9wI477rjF3ystLY26detSv359MjIyCq9LTExk5MiRhd+3bduW9957j6effppTTjmlXLVJkiRJUnk4U15OcxYu32yGfGMBkJWdw5yFy6uuqP/Zb7/9inyfl5fHqFGj2HPPPWnSpAnbbbcdr7zyCt9++22R6/bcc88i32dmZrJ06dItPtbGt8nMDM8HLLjNl19+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bK5VU61mF+8NyvNcuHRciiNBAC++GC5L7949DOSJiXD22eHy9WefNZBLkhSHDOWq9dw/uIHPhVQN5eXBM89A585w7LHw3nuQnBx2UP/qq7CjeocOUVcpSZJKEAuCoEaf9bRy5UrS0tLIzs6mYcOGUZejOJaXH7gU+398LqRqYO1aeOwxGDsW/vvfcGy77cIwfvXVkOmHaJIkRaUsOdQ95dL/uH9wA58LKY6tWQMPPgg33wzffhuObb89XHklXH45NK75PTAkSapJDOWSJFUHK1fCpElw222wdGk4lpEB114LF10EqanR1idJksrFUC5JUjz75ReYOBHuvBOys8OxNm1gyBA45xxIqflHNkqSVJOVq9HbW2+9xfr16zcbX79+PW+99dY2FyVJUq33ww9wzTXQujXcdFMYyDt0gEcfDfeQDxpkIJckqQYo10x5jx49yMrKIj09vch4dnY2PXr0IC8vr0KKkySp1lmwAMaPh4cfDpu5QdhZfdgwOPFESPDgFEmSapJyhfIgCIjFNu/EvGzZMho0aLDNRUmSVOvMmwdjxsCTT0J+fjh26KEwfDgcdRQU8/93JUlS9VemUN6vXz8AYrEYAwcOJDk5ufBneXl5/Oc//+Gggw6q2AolSarJ5syB0aPhb3/bMNa7NwwdGoZySZJUo5UplKelpQHhTHlqair16tUr/FndunU58MADueCCCyq2QkmSapoggFmzwjD+2mvhWCwGJ50UhvHOnSMtT5IkVZ0yhfIpU6YA0KZNGwYPHuxSdUmSyiII4B//gFGj4P33w7HEROjfH264AXbbLdr6JElSlYsFQRBEXURlWrlyJWlpaWRnZ9OwYcOoy5Ek1UZ5efDss+HM+H/+E44lJ8N558F114VHnEmSpBqjLDm01DPlnTt35vXXX2f77bdnn332KbbRW4G5c+eWvlpJkmqqtWth6lQYOxa++ioc2247uOQSuPpqyMiItj5JkhS5Uofyvn37FjZ269u37xZDuSRJtdrvv8ODD8LNN8N334VjjRvDlVfCZZeF/y1JkkQZQvn2229Pwv/ORj333HNp0aJF4feSJAnIzoZJk+C22+Dnn8OxzEy49lq46KJwllySJGkjpd5TXqdOHX788UfS09NJTEwkKyuL9PT0yq5vm7mnXJJU6X7+GSZOhLvuCoM5QNu2cP31MGAApKREW58kSapSlbKnvHnz5jz33HMcc8wxBEHA999/T05OTrHXtmrVqmwVS5JUHX3/PUyYAPfdFy5ZB+jYMTzW7LTToE6ZDjmRJEm1UKlnyu+77z4uv/xy1q9fX+I1QRAQi8XIy8ursAK3lTPlkqQK9/XXMG4cPPIIrFsXju27LwwfDn37gtu7JEmq1cqSQ8t0JNqqVatYvHgxe+65J6+99hpNmjQp9rq99tqrbBVXIkO5JKnCfPopjBkDTz0F+fnh2GGHhWG8Z0+wCaokSaKSlq8DpKam0qlTJ6ZMmcLBBx9c2I1dkqQa7YMPwjPG//73DWPHHAPDhsHBB0dXlyRJqvbKtdltwIABAHz88cd8/vnnxGIxOnToQOfOnSu0OEmSIhME8M9/hmH89dfDsVgMTj45DON77x1peZIkqWYoVyhfunQpp512GrNmzaJRo0YEQUB2djY9evTgySefpGnTphVdpyRJVSMI4IUXYNSocIYcwoZtZ50VdlNv3z7a+iRJUo1Srk40l19+OStXruSzzz5j+fLl/Prrr8ybN4+VK1dyxRVXVHSNkiRVvrw8ePJJ2GsvOP74MJCnpMBll4WN3R56yEAuSZIqXJkavRVIS0vjtddeY//99y8yPmfOHI466ihWrFhRUfVtMxu9SZK2aO1aePTRsJv611+HY6mpcMklcPXV0KxZtPVJkqRqp9IavRXIz88nKSlps/GkpCTyC7rRSpIUz1avhgcegFtuCc8bB2jcGK66Kpwd3377SMuTJEm1Q7mWrx9++OFceeWV/Pjjj4VjP/zwA1dffTVHHHFEhRUnSVKFW7EibN7Wpk0YwL//Hpo3h1tvhcWL4Y9/NJBLkqQqU66Z8rvuuou+ffvSpk0bWrZsSSwW49tvv2WPPfZg6tSpFV2jJEnb7uef4fbb4a67YOXKcGynncLmbQMGgMd8SpKkCJQrlLds2ZK5c+fy6quv8sUXXxAEAR07duTII4+s6PokSdo2330XLlG//35YsyYc69gxPNbs1FPDzuqSJEkRKfNfIuvXryclJYVPPvmEnj170rNnz8qoS5KkbfPVV2HztkcfhXXrwrH99oPhw8Pu6gnl2sFV4fLyA+YsXM7SVTmkp6bQpW1jEhNiUZclSZKqSJlDeZ06dWjdujV5eXmVUY8kSdvmP/+BMWPg6aehoPlo9+7hzPiRR0IsfgLvzHlZjJwxn6zsnMKxzLQURvTpSK9OmRFWJkmSqkq5pgn+7//+j6FDh7J8+fKKrkeSpPJ5/33o0yc8Z/zJJ8NAfuyx8O678M9/Qs+ecRfIB02dWySQAyzJzmHQ1LnMnJcVUWWSJKkqlSuU33HHHbz99ts0b96c9u3b07lz5yJfpfXWW2/Rp08fmjdvTiwWY/r06UV+HgQBN954I82bN6devXp0796dzz77rDwlS5JqoiCA116Dww+Hrl3hhRfC4H3qqfCvf4XfH3RQ1FVuJi8/YOSM+QTF/KxgbOSM+eTlF3eFJEmqScrV3eaEE04gFosRBNv2x8Lq1avZa6+9OOecczjppJM2+/n48eO59dZbefjhh9l111256aab6NmzJ19++SWpqanb9NiSpGosPx9mzAiPNpszJxyrUwfOPjvspr7rrtHWtxVzFi7fbIZ8YwGQlZ3DnIXL6dquSdUVJkmSqlyZQvnvv//Oddddx/Tp01m3bh1HHHEEd955JzvssEO5Hrx379707t272J8FQcDtt9/O8OHD6devHwCPPPIIzZo14/HHH+eiiy4q12NKkqqx9evDveJjxsC8eeFYSgpccAEMHgytWkVbXyktXVVyIC/PdZIkqfoq0/L1ESNG8PDDD3Psscdy+umn89prrzFo0KBKKWzhwoUsWbKEo446qnAsOTmZbt268d5775V4u9zcXFauXFnkS5JUzeXmwn33Qfv2cOaZYSBPTYUbboDFi+GOO6pNIAdIT02p0OskSVL1VaaZ8mnTpvHggw9y2mmnAXDmmWdy8MEHk5eXR2JiYoUWtmTJEgCaNWtWZLxZs2YsXry4xNuNGTOGkSNHVmgtkqSIrF4dhvFbboEffwzHmjSBq6+GSy+FRo0iLa+8urRtTGZaCkuyc4rdVx4DMtLC49EkSVLNVqaZ8u+++45DDz208PsuXbpQp04dfiz4Q6kSxDbplBsEwWZjGxs6dCjZ2dmFX999912l1SZJqiQrVsBNN0Hr1nDNNWEgb94cbrstnBkfPrzaBnKAxIQYI/p0BMIAvrGC70f06eh55ZIk1QJlminPy8ujbt26Re+gTh3Wr19foUUBZGRkAOGMeWbmhrNaly5dutns+caSk5NJTk6u8HokSVVg6dIweN99N6xaFY7ttFO4TP3ss6EG/fveq1Mmk/t33uyc8gzPKZckqVYpUygPgoCBAwcWCb05OTlcfPHFNGjQoHBs2rRp21xY27ZtycjI4NVXX2WfffYBYO3atbz55puMGzdum+9fkhRHvv02XKJ+//2Q87+AuvvuMGwYnHJK2Fm9BurVKZOeHTOYs3A5S1flkJ4aLll3hlySpNqjTH/lDBgwYLOx/v37l/vBf/vtN77++uvC7xcuXMgnn3xC48aNadWqFVdddRWjR49ml112YZdddmH06NHUr1+fM844o9yPKUmKI//9L4wbB48+GnZWB+jSJVyeftxxkFCmXVbVUmJCzGPPJEmqxWLBth42vg1mzZpFjx49NhsfMGAADz/8MEEQMHLkSO69915+/fVXDjjgAO6++246depU6sdYuXIlaWlpZGdn07Bhw4osX5JUXv/+d3is2TPPhGeOAxx+eDgzfvjhsIXeIZIkSfGuLDk00lBeFQzlkhRHZs+G0aPhhRc2jPXpA0OHQteu0dUlSZJUgcqSQ2vmJj1JUvwIAnj9dRg1CmbNCscSEsK94kOHwp57RlqeJElSlAzlkqTKkZ8PM2aEM+Nz5oRjSUkwYAAMGQK77BJtfZIkSXHAUC5Jqljr18NTT4V7xj/7LByrVw8uvBCuvRZatoy2PkmSpDhiKJckVYzcXHjkkbCb+jffhGMNG8Jll8GVV0J6erT1SZIkxSFDuSRp26xeDffdF54z/uOP4dgOO8DVV8Mll0CjRpGWJ0mSFM8M5ZKk8vn1V7jrLpg4EZYtC8d23BGuuw4uuADq14+2PkmSpGrAUF5L5OUHzFm4nKWrckhPTaFL28YkJngOsKRy+OknuO02mDQJVq0Kx9q1gxtugLPOguTkaOuTJEmqRgzltcDMeVmMnDGfrOycwrHMtBRG9OlIr06ZEVYmqVpZvDhcov7AA5Dzv39P9tgDhg2Dk0+GOv6/FEmSpLJKiLoAVa6Z87IYNHVukUAOsCQ7h0FT5zJzXlZElUmqNr78Es49F3beOVyunpMDBxwAf/sbfPIJnHaagbyayMsPmL1gGX/75AdmL1hGXn4QdUmSJNV6/hVVg+XlB4ycMZ/i/uQKgBgwcsZ8enbMcCm7pM198kl4xvizz0Lwv39JDj8chg+HHj0g5r8b1YmrpiRJik/OlNdgcxYu32yGfGMBkJWdw5yFy6uuKEnx79134dhjYZ994JlnwkB+/PEweza8/noYzA3k1YqrpiRJil+G8hps6aqSA3l5rpNUgwUBvPIKdOsGhxwCL74ICQlw+unw73+HS9UPPDDqKlUOW1s1BeGqKZeyS5IUDUN5DZaemlKh10mqgfLz4fnnoUsXOPpoeOstSEqC88+HL76Axx+HPfeMukptA1dNSZIU39xTXoN1aduYzLQUlmTnFDtDEgMy0sLj0STVMuvWwZNPwtixMH9+OFavHlx4IQweDC1aRFufKoyrpiRJim/OlNdgiQkxRvTpCIQBfGMF34/o09Emb1JtkpMD99wDu+4KZ58dBvKGDcPmbYsXw+23G8hrGFdNSZIU3wzlNVyvTplM7t+ZjLSif2xlpKUwuX9nO+5KtcVvv8GECbDTTjBoECxaBE2bht3Vv/0Wbrop/F41TsGqqZI+fo0RdmF31ZQkSdFw+Xot0KtTJj07ZjBn4XKWrsohPTX848sZcqkWWL4c7rwT7rgj/G8IZ8Kvuy7cN16/frT1qdIVrJoaNHUuMSiynclVU5IkRS8WBEGNbre6cuVK0tLSyM7OpmHDhlGXI0lVY8kSuPVWmDw5nCUH2HlnuOEGOOssqFs32vpU5TynXJKkqlOWHOpMuSTVJIsXw/jx8OCDkJsbju25JwwbBiefDImJ0danyLhqSpKk+GQol6Sa4Isvwk7qjz0G69eHYwceGDZwO/ZYiBm8FC5l79quSdRlSJKkjRjKJak6+9e/wmZtzz0HBbuRjjwynBnv3t0wLkmSFOcM5ZJUHb3zThjGX3ppw1jfvmEY79IlurokSZJUJoZySaouggBeeQVGjYK33w7HEhLg9NPDBm6dOkVbnyRJksrMUC5J8S4/H6ZPD2fGP/44HKtbFwYOhCFDoF27KKuTJEnSNjCUS1K8WrcOnnwSxoyBzz8Px+rXh4sugmuvhR13jLY+SZIkbTNDuSTFm5wcmDIlPNps0aJwLC0NLrsMrrwSmjaNtDxJkiRVHEO5JMWL336De+6BCRNgyZJwrGlTuOYauOQSaNgw2vokSZJU4QzlkhS15cvhzjth4kT49ddwrGVLuO46OO+8cMm6JEmSaiRDuSRFZcmScFb8nnvCWXKAXXYJO6n37x82c5MkSVKNZiiXpKq2aFG4X/yhhyA3Nxzba6/wjPGTToLExEjLkyRJUtUxlEtSVfn8cxg7Fh57DPLywrGuXWH4cDjmGIjFoq0vTuXlB8xZuJylq3JIT02hS9vGJCb4XEmSpJrBUC5Jle3jj8Mzxp9/HoIgHOvZM5wZ79bNML4FM+dlMXLGfLKycwrHMtNSGNGnI706ZUZYmSRJUsVIiLoASaqx3n4bevWC/faDadPCQN63L8yZA6+8At27G8i3YOa8LAZNnVskkAMsyc5h0NS5zJyXFVFlkiRJFcdQLkkVKQjgpZfg0EPhsMPg5ZfDPeL9+8O8eTB9Ouy/f9RVxr28/ICRM+YTFPOzgrGRM+aTl1/cFZIkSdWHy9clqSLk54ez4aNHw7/+FY7VrQvnnANDhsBOO5V4U/dMb27OwuWbzZBvLACysnOYs3A5Xds1qbrCJEmSKpihXJK2xbp18PjjYQO3L74Ix+rXh4svhmuvhebNt3hz90wXb+mqkgN5ea6TJEmKVy5fl6TyWLMGJk0KzxUfODAM5I0awR//CIsXh+ePlyKQu2e6eOmpKRV6nSRJUrxyplySymLVKpg8GW69FX76KRxLTw9nxS++GBo2LNXdbG3PdIxwz3TPjhm1cil7l7aNyUxLYUl2TrHPUQzISAuX+kuSJFVnzpRLUmksWwYjRkCrVnD99WEgb9UK7roLFi0K942XMpBD2fZM10aJCTFG9OkIhAF8YwXfj+jTsVZ+YCFJkmoWQ7kkbcmPP8LgwQStW8Of/wwrVrCmbTvyH3wIvv4aLr0U6tUr8926Z3rrenXKZHL/zmSkFV2inpGWwuT+nWv1nntJklRzuHxdkoqzcCGMHw8PPQRr1xIDPkvfibu7nsLMXbvS7KcGjPjyl3IHQ/dMl06vTpn07Jhhd3pJklRjGcolaWPz58OYMfDEE5CXB8CHO3bk7q6nMGunfSEWhsGCZmzlnbF1z3TpJSbEPPZMkiTVWIZySQL46KPwjPHnny8cCo46mktaH81L2+9SGMYLf8a2NWMr2DM9aOpcYv+7vwLumZYkSao93FMuqfYKAnjrLTj6aNh//w2BvF8/+PBD3p/0GC813nWzQF54c7atGZt7piVJkuRMuaTaJwhg5kwYNQrefTccS0yEM86AG26AjmHX76Wf/FCqu9uWZmzumZYkSardDOWSao+8PJg2LVym/skn4VjdunDuueGRZm3bFrm8qpqxuWdakiSp9jKUq9Ty8gNn82qZGvOar1sHjz0GY8fCl1+GYw0awMUXwzXXQPPmxd7MZmySJEmqbIZylcrMeVmMnDGfrOwNy3Qz01IY0aej+15rqBrxmq9ZEx5pNn48fPttOLb99nDFFXD55dBky7PTNmOTJElSZYsFQVDcBFCNsXLlStLS0sjOzqZhw4ZRl1MtzZyXxaCpczebKSyIITakqnmq/Wu+ciVMngy33QY//RSONWsG114bzo6nppbp7mrEBxSSJEmqMmXJoYZybVFefsAh494oEkY2VrB8953rD3e2sIao1q/5smUwcSLceSesWBGOtWoF118P55wD9eqV+65rzFJ+SZIkVbqy5FCXr2uL5ixcXmI4g6JHQtmoqmaolq/5jz/ChAlw772wenU41r49DB0adlRPStrmh6gtzdj88EGSJKlqGcq1RaU96mlbjoRSfKlWr/k334T7xadMgbVrw7F99oHhw+GEE8JjzlRqLtOXJEmqeglRF6D4VlVHQil+VIvX/LPP4KyzYNddw9nxtWvh0EPhpZfg44/hpJMM5GVU0Edg01USS7JzGDR1LjPnZUVUmSRJUs1mKNcWFRwJVdLi1RjhTJpHQtUccf2af/QR9OsHnTrB1KnhueO9esFbb4VfvXpBzKXWZZWXHzByxvxij30rGBs5Yz55+TW6BYkkSVIkDOXaooIjoYrjkVA108av+aavaiSveRDAm2/C0UfD/vvD88+Hwfukk8JZ8ZdeCmfJVW5l6SMgSZKkimUoV6mk1d+8UVaj+knxfzSWyqVXp0wm9+9MRlrRJeoZaSlV95oHAfzjH3DIIdC9O7zySrgk/eyzyft0HrPH3cvfEpoxe8EyZ3C3UbXqIyBJklTD2OhNW1TSedUAv/6+rsrrqQnK2926qrti9+qUSc+OGVXfiTsvD557DkaPhn//OxxLToZzz4UhQ5j5WzIj/z6frOyFhTepKc3Ioup8Xi36CEiSJNVQhnKVaEv7TCFcyjxyxnx6dsxw+Xoplbe7dVRdsav0GLC1a+Gxx2DsWPjvf8Ox7baDQYPg6qshM7PED4kKmpFVh5UbJQXvKDufF/QRWJKdU+z/3gvOprd3hCRJUsWLBUFQo9d9luXQdhU1e8EyTr///a1e98QFB9aK85u3VUmBsuDjjJICZXlvV22sWQMPPhgebfbdd+HY9tvDlVfC5ZdD4zAI5uUHHDLujRL3PhcEx3euPzxuPyQqKXgfv1cm9721MNLXuOB9BhSpo8a8zyRJkqpQWXKoe8pVonjZZ5qXHzB7wTL+9skP1Xb/cHm7W9fortgrV4az4m3ahOH7u+8gIwNuvhkWL4YRIwoDOVT/ZmQlHTmWlZ3DvcUEcqja1zgu+ghIkiTVQi5fV4niYZ9plEt6K1JZAuXGqw7Ke7utiWrvMgC//AITJ8Kdd0J2djjWpg0MGQLnnAMpxb+f4uVDovLY2laQLSnva1wekfURkCRJqsUM5SpR1PtMa8L+4QLlDZSVEUQj+6Djhx9gwgS49174/fdwbLfdYOhQOP10SNq8w//G4uFDovLa2ocrpVFVHzZUaR8BSZIkuXxdJYvyvOqatmy7vIGyooNoSUuoCz7omDkvq1T3UyYLFsBFF8FOO8Ftt4WBvHNnePZZ+OwzOPvsrQZy2PAhUUnvthjhhwvx2IysIgJ1PH7YIEmSpG1nKNcWRbXPtLrvH95UeQNlRQbRKv+gY948OPNM2HVXuO++sLv6oYfCSy/BRx/BSSdBQun/CYryQ6JttS2BOp4/bJAkSdK2c/m6tiqKfabVef9wcQoC5aCpc4lRfHfr4gJleW9XnMran775A80Jzxj/2982jPXqBcOGhaF8GxR8SLTp8vuMOO8zsLWtIAW29TWWJElS9WMoV6lU9T7T6rx/uCTlDZQVFUQr9YOOIIBZs8Iw/tpr4VgsFs6GDx0aLlevINWxGVlpPly58LC2/P3fWdXqwwZJkiRtO0O54lLUTeYqS3kDZUUE0Ur5oCMI4B//gFGj4P3/nWmfmAj9+8MNN4SN3CpBdWxGVpoPV4b06lCtPmyQJEnStosFQVA9OmWVU1kObVd8KWhKBsXPLFan7uvxIC8/4JBxb2z1g453rj9860EwLw+eeQbGjIH//CccS06G88+HwYPDI85UrEiPo5MkSVKVKEsOtdGb4lZUTeZqqgpplLZ2LTz4YDgDfvrpYSDfbju47jpYtAjuustAvhUFs/x9996Rru2aGMglSZJqOWfKFfecWaxY5Tqn/Pff4YEH4Oab4fvvw7HGjeHKK+Hyy2H77augckmSJKl6KEsONZRLtVCpP+jIzoZJk8LzxX/+ORzLzIRrrw3PHt9uu6otXJIkSaoGypJDbfQm1UJbbZT2888wcWK4HD07Oxxr0wauvx4GDoSU6tP1XpIkSYpnhnJVSy5pryTffw8TJsB994VL1gE6dAiPNTv9dKjjPxmSJElSRfIvbFU75doTrS37+msYNw4eeQTWrQvH9t0Xhg2DE06ABHtCSpIkSZXBv7RVrRQck7ZxIAdYkp3DoKlzmTkvK6LKqqlPP4UzzoD27cNGbuvWwWGHwcsvw4cfQr9+BnJJkiSpEvnXtqqNvPyAkTPmF3vGdsHYyBnzycuv0b0LK8YHH0DfvrDnnvDEE5CfD717w9tvw5tvwlFHQcztAJIkSVJlM5Sr2pizcPlmM+QbC4Cs7BzmLFxedUVVJ0EAb7wBRxwBBx4If/97GLz/8AeYOxdefBEOOSTqKiVJkqRaxT3lqjaWrio5kJfnulojPx9eeAFGjw5nyCFs2Na/P9xwA7RvHzbOW7DMxnmSJElSFTOUxwm7iW9demrpjuEq7XU1Xl4ePP00jBkT7h0HSE6G88+H666D1q0BG+dJkiRJUTKUxwFDUel0aduYzLQUlmTnFLuvPAZkpIUfaNRqubnw17+G3dS//jocS02FSy6Bq66CjIzCSwsa5236fBY0zpvcv7PvQUmSJKkSuac8YnYTL73EhBgj+nQEwgC+sYLvR/TpWHtXGKxeDRMnQrt2cMEFYSBv3Bj+/GdYvBjGji0SyG2cJ0mSJEXPUB4hQ1HZ9eqUyeT+nclIK7pEPSMtpfbO6q5YEe4Xb9MmnAn/4QfIzIQJE8Iw/sc/wvbbb3YzG+dJkiRJ0XP5eoTKEoq6tmtSdYVFpLT76nt1yqRnxwz34P/8M9x+O9x1F6xcGY61bQvXXw8DB4b7x7fAxnmSJElS9AzlETIUbVDWffWJCbFa8UFFsb7/Hm65Be67D9asCcc6doRhw+DUU8PO6qVg4zxJkiQpeobyCBmKQvHYbCwuu+F//XXYvO2RR2DdunBsv/1g+HA4/nhIKNtulNrWOC8uX1OViq+dJEmqyQzlEaptoag4W9tXHyPcV9+zY9igrCr+MI+7bviffhoea/bUU+GZ4wDdu4cz40ceCbHyPQcFjfMGTZ1LDIq8BjWtcV7cvaYqNV87SZJU08WCIKjRXcRWrlxJWloa2dnZNGzYMOpyNlMwSwzFh6Ka3rxs9oJlnH7/+1u97uojd+XJD7+t9D/MS5q1j+T1eP/9sIHbjBkbxo45JpwZP+igCnuYmh564uo1VZn42kmSpOqqLDnUUB4Hanoo2pK/ffIDVz75SbluW9F/mOflBxwy7o0Sm+8VrFx45/rDK2/2OAjgjTfCMP7GG/974Bj84Q8wdCjsvXelPGxNXR4cF6+pysXXTpIkVWdlyaEuX48Dtbmb+Lbsl990efu2Pl+RdsPPz4cXXoBRo2DOnHCsTh04++ywm/quu1bs422ipjbO84SD6svXTpIk1RaG8jhRU0PR1ixblbtNt6/IP8wj6Ya/fj0880w4Mz5vXjiWkgIXXACDB0OrVhX3WHGgqmfkPeGg+vK1kyRJtYWhPI7U1CXEJZk5L4vLnvxXhdxXRfxhXqXd8HNz4dFHw27qCxaEY6mpcOmlcPXVkJ6+7Y8RZ6LYpuEJB9WXr50kSaotDOVxorbtKy/oul5RKuIP8yrphr96Ndx/f3jO+A8/hGNNmoRB/NJLoVGj8t93HIvq2DtPOKi+fO0kSVJtUbaDjVUpCgLLpvsnCwLLzHlZEVVWeba2X7S0YoQfXlTEH+YFR4QV3O+mjwPbcETYihXhfvE2bcIA/sMP0Lw5+bfeygf/nMvfjh3I7GV55OXXvL6LWzv2DsK+AJXxu1fqa6pK5WsnSZJqC0N5xKIMLFEqy3LzRvWTiFE1f5j36pTJ5P6dyUgrOvOekZZSvtncpUvD88Rbt4b/+z/45RfYaSe47z5envEuB+fsyamPfcqVT37C6fe/zyHj3qhxH8KUpWFXZajw11RVxtdOkiTVBnG9fP3GG29k5MiRRcaaNWvGkiVLIqqo4tXWDsNlWW4+tt8eAJst78+opOX9FdIN/9tvwyXq998POf+reffdw4B+yinM/OLnSJZzRyEeGnbV5hMOqjtfO0mSVNPFdSgH2H333XnttdcKv09MTIywmooXD4ElClvbLwqQEIO7Tt+nMJxW5R/mW+qGv8WGfP/9b9i87dFHw87qAF26wPDhcNxxkJCw1dURFXnMWzyIl4ZdtfWEg5rA106SJNVkcR/K69SpQ0ZGRqmvz83NJTd3wzFbK1eurIyyKky8BJaqVrBfdNDUucSg2IB61+mdOWbPzCK3ifoP85Ia8t2ya8DBzzwQHm+Wnx/+oEePMIwffjjENoTr2rY6woZdkiRJUsnifk/5V199RfPmzWnbti2nnXYa33zzzRavHzNmDGlpaYVfLVu2rKJKy6cgsJQ0H1qRjcziTUn7RTPTUrinf9FAHg+Ka8jX+YfPuenBoRx8ck946qkwkPfpA++9B2+8AUccUSSQQ+1bHWHDLkmSJKlksSAI4raD2EsvvcTvv//Orrvuyk8//cRNN93EF198wWeffUaTJsXPIBY3U96yZUuys7Np2LBhVZVeJgVhD4rOGBdElJq0v7g41eF89rz8gEPGvREG8iDg4MX/5rLZT9H120/Dn8cSeH2PbhzxyG0k7r3XFu9r9oJlnH7/+1t9zCcuOLBGzJQXqG3H/kmSJKn2WrlyJWlpaaXKoXEdyje1evVq2rVrx5AhQ7jmmmtKdZuyPBlRMrDEt9kLlnHGfe/R86sPuOT9p9k76ysA1ibUYVqnw7nngJNY1HjHUgXpgoC/teXc71x/eNx9OLGtqsMHMJIkSdK2KksOjfs95Rtr0KABe+yxB1999VXUpVQ4OwzHsfXrqfvU48x86Bba//ItAGvqJPPkXkdxX5d+ZDVsWnhpaZacb2k/fU1fzh0PfQEkSZKkeFKtQnlubi6ff/45hx56aNSlVIqqDizOWm5Fbi488giMG8e+/+tlsLJufR7d9zim7Hs8yxo02uwmpW3IV7CfvqqOeZMkSZIUn+I6lA8ePJg+ffrQqlUrli5dyk033cTKlSsZMGBA1KVVey6X34LVq+G++8Jzxn/8EYBghx24t/PxTOpwFCtTttvsJuXpIF4RqyP8YEWSJEmq3uI6lH///fecfvrp/PLLLzRt2pQDDzyQ999/n9atW0ddWrVW0Fhu0/3MS7JzGDR1bo1vLFeiX3+Fu+6CiRNh2bJwbMcd4brriJ1/Pm0WrmRVBS8535bVEX6wIkmSJFV/1arRW3lUl0ZvVaVIF/Fi1OQmYyX66Se47TaYNAlWrQrHdt4ZbrgB+veH5OTCS+MlCJf0wUpt6dgvSZIkxbMa2+hN227OwuUlBnIIZ4CzsnOYs3B5zW/ItXhxuET9gQcg53/PyR57wLBhcPLJUGfz/3nEQ0O+vPyAkTPmF9u5PSAM5iNnzKdnx4za88GKJEmSVE0ZymuZ0nQHL8t11dKXX8LYsTB1KqxfH44dcAAMHw7HHQexLQfZ8iw5r8i9336wIkmSJNUchvJaprTdwUt7XbXyr3/BmDHw7LNQsGvjiCPCmfEePbYaxsuqIIi/Nn8Jz3/yA8tXryv82aZL3ssS2v1gRZIkSao5DOU13KZhb9/W25OZlsKS7Jxilz+Xp4t43Hv3XRg9Gl58ccPY8ceHYfyAAyrlIYvbe76xjZvqAWXapx71Byt2fJckSZIqjqG8BiupKdnxe2Vy31sLK7SLeNwJAnj1VRg1Ct56KxxLSIBTT4WhQ8O945WkpCZsRcojfL5vmPYp2b+vK1Mn/C5tG0f2wUq8NLqTJEmSaoqEqAtQ5SgIhpvO1C7JzuG+txZy4WFtyUgrOpOakZZS/bt25+fD889Dly5w9NFhIE9KgvPPD/eSP/54pQbyLTVh21QArCgmkBf8DMIZ9Lz8olckJsQY0acjsOGDlAKV+cHKlt5Tg6bOZea8rAp9PEmSJKk2cKa8BipNd+6//zuLN6/rwceLf60Zy5DXr4cnnwz3jM+fH47VqwcXXgjXXgstW1ZJGVtrwlYWW2rY1qtTJpP7d95s1jpjG/aqb4kd3yVJkqTKYSivgUrbnfvjxb9W/+7cOTnwyCMwbhwsXBiONWwIl18OV14JTZtWaTmV0VytpPvc2vFsFbnU3I7vkiRJUuUwlNdAtaI792+/wX33heeMZ/1v2XTTpnD11XDJJZCWVuUl5eUH/LIqt8Lvd0sN20o6nq2kfe1b2qu+JbXiPSVJkiRFwFBeA0XdnbtS/for3HUXTJwIy5aFYy1awHXXhfvG69ePpKytdVsvSaP6ScU2eoPyN2yrjKXm1eU9ZWd4SZIkVTeG8hooyu7cleann+DWW2HSpHCWHGDnneGGG+Css6Bu3VLfVUUHt9J0W99UwTJygEFT51ZoJ/zKWGpeHd5TdoaXJElSdWQor4EKunNXdNiLxOLFcPPN8OCD4f5xCLunDxsGf/gDJCaW6e4qOriVpdt6kwZ16bt3c47YrRnE4JffcklPTeHuMzrzl39suWFbWVTGUvN4f09V9HJ9SZIkqaoYyuNIRc7glrY7d9z68ksYOxamTg07qwMceCAMHw7HHguxsj8vlRHcSttt/Y/HdmDgwW15df4SBj/7780+FPjjsR3YvkFyhbz2lbXUPF7fU3aGlyRJUnVmKI8TlbH0dmvduePSv/4VHmv27LMQ/C9mHXlkODPevXu5wjhUXnAr7WzzDqnJvDp/SYkfClz6+L+Y3L8zfffesdSPXZLKXGoej+8pO8NLkiSpOkuIugBtmMHdNFgUzODOnJdV7vsu6M7dd+8d6dquSfwG8nffhWOOgc6d4ZlnwkDety+8/z68+ir06FHuQA5lC25lUdrZ5h0aJG/xQwEIPxTIyy/LzvTiFSw1hw1LywtUxFLzeHtP2RlekiRJ1ZmhPGJbm8GFigtrcScI4OWXoVs3OOQQeOklSEiAM86A//wHpk+HAw6okIeqrOBWMCtdUiyNEa54IEalfChQkoKl5hlpRT80yEhLqXH7q6tLZ3hJkiSpOC5fj1itXHqbnx8G7tGj4eOPw7GkJBg4EK6/Htq1C/fXL1hWYUukKyu4lbYB2i+/le788oqczY3HpeaVoTp0hpckSZJKYiiPWK1aertuHTz5ZLhn/PPPw7H69eGii+Caa8Lzxqmc/fWVvc96aw3QZi9YVqr7qujZ3IKl5jVZvHeGlyRJkrbEUB6xipzBrejztytMTg5MmQLjx8OiReFYWhpcdhlceSU0bVp4aWUdbVXZwW1rs9LO5laueO0ML0mSJG1NLAiCGrhZeYOVK1eSlpZGdnY2DRs2jLqczeTlBxwy7o2thrV3rj98i4GxMmaXt9lvv8E998CECbBkSTjWtGk4Kz5oUBjMN1LwXJS0nL+0z8WWRPk8FXzgAMV/KFDT9npHIW4/mJIkSVKtUpYcaiiPA9sa1kqaXY4s7C1fDnfeCRMnwq+/hmMtW8J118F554VL1osxe8EyTr///a3e/RMXHLhNS7KjDG5x+eGJJEmSpApVlhzq8vU4sC1Lb8t7/nalBNOsLLjtNpg8OZwlB9h1V7jhBjjzTKhbd4s3r6r99VHus64tzdckSZIklY6hPE6UN6yVp3t7hc/WLloU7hd/6CHI/V+X8b32gmHD4KSTIDGxVHdTnY622pYPNWpD8zVJkiRJpWMojyPlCWtlnV2u0EZqn38OY8fCY49BXl441rUrDB8OxxwDsbLN/laXZmguQZckSZJUURKiLkDbpiyzy1tb6g4w/Pl5PD/3e2YvWEZefgntBubOhZNPht13h0cfDQN5z54waxa8+y4ce2yZAzls6JAOG/bDF4iXo60KPtTYdHVCwYcaM+dlRVSZJEmSpOrIUF7NFcwulxRTY4SzuF3aNi7VUvdlq9dy9dP/5vT73+eQcW8UDZlvvw29esG++8Jzz0EQwIknwpw58Mor0K1bucL4xgr212ekFf2wISMtJfLu5KX5UGPkjPklf5ghSZIkSZtw+Xo1V5bzt8vaIC0rO4eL//oxz7ZdyX6PTYZ33vnfgybCaafB0KHhbHkplXYfdrw2QyvP/n1JkiRJ2hJDeQ1Q2u7tZWmQFgvy6fXle1z6/jN0+mlBOFi3LpxzDgwZAjvtVKYay7oPOx6boVVVd3hJkiRJtYehvIYozezyr6tzSYjBllZX18lbT9/5bzLo/WfYefn3APyelMwXx59B5ztugubNy1xbhTaXi1B16g4vSZIkqXowlNcgW5pdnjkvi0sf/1ex+6EBktfl8odPX+PiD56jxcqlAGQnN+Dhffvw8L59CHbYgY8zMind4WYblPcc9XhUXbrDS5IkSao+DOW1wJaCcYPc3znzk5e44MPnabp6BQA/12/EA11O4LG9j+G35Prhhb+vK9de6Zq0D7ss+/clSZIkqTQM5bVAccG40ZqVnPPRDAbMnUGjnN8A+L5hU+494CSe3qMnuUnJm91PefZK17R92KXdvy9JkiRJpWEorwU2DrxNf1vOBXOe58xPXqLBunB8QeMWTD7wZKZ37M76xJLfEuXZK10T92HHa3d4SZIkSdWPoTyOlPbIsLJKT02hxYolXPzBc/zh01dJzlsPwGfpO3FX11N4edeu5CeUvFt8W/ZK19R92PHYHV6SJElS9WMojxNlPTKs1ObP54AxY5n1+GPUyc8H4MMdO3J311OYtdO+EIsRA7avn8Svv6/b7ObbulfafdiSJEmSVLJYEARbOCCr+lu5ciVpaWlkZ2fTsGHDqMspVklHhhXE1HIdGfbRRzB6NDz/fOHQm207M6nrKXzQYneIxTZ7DKByPhigEj90kCRJkqQ4U5Yc6kx5xCr0yLAggLfeCsP4K69sGO/XD4YOZU3Kjnw7Yz5soUFZZe2Vdh+2JEmSJG3OUB6xCjkyLAjgpZfCMP7uu+FYYiKccQbccAN07AhAL7Yeuitzr7T7sCVJkiSpKEN5xLbpyLC8PJg2LQzjn3wSjtWtC+eeC9ddBzvttNlNDMaSJEmSFD8M5REr15Fh69bBY4/B2LHw5ZfhWIMGcPHFcM010Lx5JVQqSZIkSapohvKIlenIsDVr4KGHYPx4+Pbb8IJGjeCKK8KvJtVrBryyjoCTJEmSpOrCUB6x0hwZ9ufDW5F4y81w663w00/hYLNmcO214ex4amqF11XZgdlu7JIkSZLkkWhxo7iQ2j4pl7t/eYedn5wCK1aEg61awfXXwznnQL16VVZLRQbmSjkCTpIkSZLiRFlyqKE8jhTMTq9csIg9nnqQzKceJbZ6dfjD9u1h6NCwo3pSUqXVUNmBOS8/4JBxb5TYcb5guf471x/uUnZJkiRJ1ZLnlFdTiYsW0vXm8TBlCqxdGw7usw8MGwYnnhgec1aJKvTM9BJUyBFwkiT9f3v3Hhx1df9//LUhIQs0WUg07KZcjGiBNBQFRCIIXgYIrYiXVrxRqNpvy3jHGy3tBPz9+hWvtdYalUGkQ62dFrBSbCwKQS1gQIISQ0ExilM3pgZMUphATM73j3S3bLLXXPbz2c3zMcNMsns+nz3h5JOd157zOW8AAJIEodwOWlralqO/8ELb15I0ZYq0ZIk0c6bkiM+McTwCc5dKwAEAAABAkiGU20GfPlJjY1sgnzmzLYyff37cuxGPwNypEnAAAAAAkKRSrO4A/uN//1fatUsqLbUkkEvxCcy+EnCh5v4dattUbmJeVqdfAwAAAAASBaHcLkaPlsaPt7QL8QjMvhJwvvO1P78kFc/OZ5M3AAAAAL0CodyGWlqNth+s05/3/FPbD9appTU+G+THKzAXFXhUcv04uV2BM+5ul5NyaAAAAAB6FUqi2UwsNcJ9JdRqG5uUk9E2g90dM8w9Xafcp6f6DwAAAABWok75SRIplMdSI7yngzOBGQAAAAA6h1B+kkQJ5S2tRlMe3ByyJJlDbcu737rvIm2qqok6vAMAAAAA4iuWHEpJNJuItkb4joN1WrahqkMg97VxSFq2oUrT890xz2y3nx0fP3yQ3vnkSMBsua+vzKADAAAAQNcRym0i2trf2z/6IqrwXl59WIUjsqN+/WDL4VMc0sl7zA3snyZJ+vJYs/+xnrjXHAAAAAB6C3Zft4noa39HNysdbciX/nsve/uw337T9y+PNQcEckmqqW/SwjW7VVrpjfr1AAAAAABtCOU2EW2N8HOjrBF+ytfSo2rX0mpCLoePhu+4ZRuq4la6DQAAAACSBaHcJqKtEZ7iiPL+7SjzcaR72aN9Kd+SeQAAAABA9AjlNlJU4FHJ9ePkdgUuZXe7nP4d1b84ejyqc0XbLpZl7vE8FwAAAAD0Bmz0ZjNFBR5Nz3eH3OE82nvPu7tdvM8FAAAAAL0BodyG+qQ4Qu6c7rv3vKa+KegKdV8984lR3nse6XzRiPU1AQAAAABtWL6eYKK99zza2uHhzheNzrwmAAAAAKANoTwBRXPveXecr33GHtQ/zV+rvKuv2V5Lq9H2g3X6855/avvBOnZyBwAAANArOIwxSZ1+Ghoa5HK5VF9fr8zMTKu7061aWk3Ie8+743zjhw/SO58cCTi/pG59TamtTvqyDVUBu8B7XE4Vz87vctgHAAAAgHiLJYcSymGp0kqvFq7Z3eF+dl/M745ZeAAAAACIp1hyKMvX0S06s/y8pdVo2YaqoBvM+R5btqGKpewAAAAAkha7r6PLOrv8vLz6cMAx7RlJ3vomlVcfDrkbPQAAAAAkMmbK0SW+5eftw3VNfZMWrtmt0kpvyGNrG0MH8s60AwAAAIBEQyhHp3V1+XlOhjPo451tBwAAAACJhlCOTotl+XkwE/Oy5HE5Q9ZHd6htGbxv13cAAAAASDaEcnRaV5ef90lxqHh2viR1COa+74tn53e55FpnUTsdAAAAQE9jo7dewFd/vKahSYf/fVxZA/rK7erX5Rrj3bH8vKjAo5Lrx3XYKM5tcZ1yaqcDAAAAiAdCeZILFi59uhoyfcvPQy1hd6gtXEdafl5U4NH0fLfKqw+rtrFJORnOLn9g0BWhaqf7Nq+jdjoAAACA7sLy9SQWamd0H28UO6SH0yfFoUvHhg+n0S4/75PiUOGIbM056+sqHJFt6ZJ1aqcDAAAAiBdCeZIKFy5PZtT5kFla6dWzb1SHfP5/puYl3IxyVzevAwAAAIBYEMqTVKRwebLOhMxIod8h6eV3vQk3o0ztdAAAAADxRChPUrGGxljbJ+uMMrXTAQAAAMQToTxJxRoaP/i8MaayX8k6o0ztdAAAAADxRChPUpHCZXtPbjmoa1bs0JQHN0e18VtPzCjboS643WunAwAAAEguhPIk5KtL/u0Cd8SN3tqriXJH9u6eUS6t9GrKg5t1zYoduv3FPTF9QNDdfLXT3a7ADxTcLifl0AAAAAB0K4cxJrF24opRQ0ODXC6X6uvrlZmZaXV3ouYL1rHW7X7lPa9+9udKHT56wv9YikOKZdLZV1/8rfsuCvuavpJrkgLCv++IaANsqLrgsZ6nu3V2DAAAAAD0brHk0NQ49QkxKK30atmGqoCN1Dwup4pn54cNpw+8UqVngpQo8wXyH0w+TUMG9lPd0RN6quxgyPOcvElb4YjskO18M8rt++qOoq8+keqCO9RWsm16vjvugdhXOx0AAAAAegqh3GZCzRr7lpWHmjV+5b3PggbywHPX6K37LtJf3vssqr78/cN/RZwdLirwaHq+u9MzyrHs4k5ABgAAAJBsuKfcRiLNGktts8btN0BraTX62Z8rI57fF26j3XztyS0Ho7qv2zejPOesr6twRHZMM9rJuos7AAAAAESDUG4jna39XV59WIePNkf1GrWNTTHtzB7txm+dRV1wAAAAAL0ZodxGOjtrHMssck6GM2zZr/bCzdB3B+qCAwAAAOjNCOU20tlZ42iPyx7Q1x9uQ5X9CibUDH13iLUuuB1qmQMAAABAd2GjNxvxzRrX1DcFva/cV6qs/ayx77hwS98l6f/NKQi439u3SdsvNx3Qk1s+jNi/nrqvO9pd3Du7Kz0AAAAA2BWh3EZ8s8YL1+yWQ+oQzI2kq88ZGva4UPPGP5qap29/q2Nw7ZPi0OQzTokqlPfkfd2RdnHv7K70AAAAAGBnDmNMUq//jaVou10EmxE+WajZ4WDHZQ1I0/+fU6CZBZ6Qgbel1WjKg5sjztC/dd9Fca8VLv23f6H+P6zuXzJoaTWdLmsHAAAAIFAsOZRQblMtrUZPbv5Qv3ztQIfnfFEp2OxwsHC1qaom4rJv30y0FDhDH+614mX7wTpds2JHxHa//+Ekapl3ArcFAAAAAN0rlhzKRm829uLOQ0EfD7cjevua4ZuqarRwze4Os8ztS52F2vjN7XJavjScWuY9x/dhTKTfDwAAAAA9g3vKbSqWmuWhZodbWo2WbagKuiTdqG0WfNmGKk3Pd6tPiiPifd1WoZZ5z4j19wMAAABA90uImfKnnnpKeXl5cjqdGj9+vN58802ru9TjumN2OJZg79N+pt0OYYxa5j2jM78fAAAAALqX7UP5H/7wB91xxx1asmSJKioqdP7552vWrFk6dCj40u5k0R2zw8my7DvWWuaITrL8fgAAAACJzPah/LHHHtONN96om266SaNHj9bjjz+uoUOHqqSkxOqu9ajumB1OpmXfdr7nPVEl0+8HAAAAkKhsfU/5iRMn9M4772jx4sUBj8+YMUPbtm0Leszx48d1/Phx//cNDQ092seeEq5mebSzw75gH6nUWaIs+7brPe+JKtl+PwAAAIBEZOuZ8i+++EItLS0aPHhwwOODBw9WTU1N0GMeeOABuVwu/7+hQ4fGo6s9oquzw8m47NuO97wnqmT8/QAAAAASja1nyn0cjsBQYIzp8JjPT37yEy1atMj/fUNDQ8IH867MDvuCffs61G7qUEP8fgAAAABWs3UoP+WUU9SnT58Os+K1tbUdZs990tPTlZ6eHo/uxY1vdrizWPaNcPj9AAAAAKxj61Det29fjR8/Xps2bdLll1/uf3zTpk2aM2eOhT1LPF0N9khu/H4AAAAA1rB1KJekRYsWad68eZowYYIKCwv17LPP6tChQ/rxj39sddcAAAAAAOgS24fyuXPnqq6uTvfff7+8Xq8KCgr0yiuvaPjw4VZ3DQAAAACALnEYY4JVQ0oaDQ0Ncrlcqq+vV2ZmptXdAQAAAAAkuVhyqK1LogEAAAAAkMwI5QAAAAAAWIRQDgAAAACARWy/0RukllZDDWkAAAAASEKEcpsrrfRq2YYqeeub/I95XE4Vz85XUYHHwp4BAAAAALqK5es2Vlrp1cI1uwMCuSTV1Ddp4ZrdKq30WtQzAAAAAEB3IJTbVEur0bINVQpWr8732LINVWppTeqKdgAAAACQ1AjlNlVefbjDDPnJjCRvfZPKqw/Hr1MAAAAAgG5FKLep2sbQgbwz7QAAAAAA9kMot6mcDGe3tgMAAAAA2A+h3KYm5mXJ43IqVOEzh9p2YZ+YlxXPbgEAAAAAuhGh3Kb6pDhUPDtfkjoEc9/3xbPzqVcOAAAAAAmMUG5jRQUelVw/Tm5X4BJ1t8upkuvHUaccAAAAABJcqtUdQHhFBR5Nz3ervPqwahubdMrX0iUjfXH0uLYfrNPEvCxmywEAAAAgQRHKE0CfFIcKR2SrtNKru//4bkCpNI/LqeLZ+cyaAwAAAEACYvl6giit9Grhmt0dapfX1Ddp4ZrdKq30WtQzAAAAAEBnEcoTQEur0bINVTJBnvM9tmxDlVpag7UAAAAAANgVoTwBlFcf7jBDfjIjyVvfpPLqw/HrVA9oaTXafrBOf97zT20/WMeHDAAAAACSHveUJ4DaxtCBvDPt7Ki00qtlG6q4Xx4AAABAr8JMeQLIyXBGbhRDO7vhfnkAAAAAvRWhPAFMzMuSx+VUqMJnDrXNKk/My4pnt7oF98sDAAAA6M0I5QmgT4pDxbPzJalDMPd9Xzw7PyHrlfeW++UBAAAAIBhCeYIoKvCo5PpxcrsCl6i7XU6VXD8uYe+77g33ywMAAABAKGz0lkCKCjyanu9WefVh1TY2KSejbcl6Is6Q+yT7/fIAAAAAEA6hPMH0SXGocES21d3oNr775Wvqm4LeV+5Q22qARLxfHgAAAAAiYfk6LJXM98sDAAAAQCSEclguWe+XBwAAAIBIWL4OW0jG++UBAAAAIBJCOWwj2e6XBwAAAIBIWL4OAAAAAIBFCOUAAAAAAFiEUA4AAAAAgEUI5QAAAAAAWIRQDgAAAACARQjlAAAAAABYhFAOAAAAAIBFCOUAAAAAAFiEUA4AAAAAgEUI5QAAAAAAWIRQDgAAAACARQjlAAAAAABYhFAOAAAAAIBFCOUAAAAAAFiEUA4AAAAAgEVSre4ApJZWo/Lqw6ptbFJOhlMT87LUJ8VhdbcAAAAAAD2MUG6x0kqvlm2okre+yf+Yx+VU8ex8FRV4LOwZAAAAAKCnsXzdQqWVXi1cszsgkEtSTX2TFq7ZrdJKr0U9AwAAAADEA6HcIi2tRss2VMkEec732LINVWppDdYCAAAAAJAMCOUWKa8+3GGG/GRGkre+SeXVh+PXKQAAAABAXBHKLVLbGDqQd6YdAAAAACDxEMotkpPh7NZ2AAAAAIDEQyi3yMS8LHlcToUqfOZQ2y7sE/Oy4tktAAAAAEAcEcot0ifFoeLZ+ZLUIZj7vi+enU+9cgAAAABIYoRyCxUVeFRy/Ti5XYFL1N0up0quH0edcgAAAABIcqlWd6C3KyrwaHq+W+XVh1Xb2KScjLYl68yQAwAAAEDyI5TbQJ8UhwpHZFvdDQAAAABAnLF8HQAAAAAAixDKAQAAAACwCKEcAAAAAACLEMoBAAAAALAIoRwAAAAAAIsQygEAAAAAsAihHAAAAAAAixDKAQAAAACwCKEcAAAAAACLEMoBAAAAALAIoRwAAAAAAIsQygEAAAAAsAihHAAAAAAAixDKAQAAAACwCKEcAAAAAACLEMoBAAAAALAIoRwAAAAAAIsQygEAAAAAsAihHAAAAAAAixDKAQAAAACwSKrVHehpxhhJUkNDg8U9AQAAAAD0Br786cuj4SR9KG9sbJQkDR061OKeAAAAAAB6k8bGRrlcrrBtHCaa6J7AWltb9dlnnykjI0MOh8Pq7gTV0NCgoUOH6tNPP1VmZqbV3UEPYqx7D8a692Csew/GuvdgrHsPxrr3iPdYG2PU2Nio3NxcpaSEv2s86WfKU1JSNGTIEKu7EZXMzEz+GPQSjHXvwVj3Hox178FY9x6Mde/BWPce8RzrSDPkPmz0BgAAAACARQjlAAAAAABYhFBuA+np6SouLlZ6errVXUEPY6x7D8a692Csew/GuvdgrHsPxrr3sPNYJ/1GbwAAAAAA2BUz5QAAAAAAWIRQDgAAAACARQjlAAAAAABYhFAOAAAAAIBFCOU9bOnSpXI4HAH/3G532GO2bt2q8ePHy+l06vTTT9fTTz8dp96iK0477bQOY+1wOHTzzTcHbV9WVha0/T/+8Y849xyRvPHGG5o9e7Zyc3PlcDj00ksvBTxvjNHSpUuVm5urfv366YILLtD7778f8bxr165Vfn6+0tPTlZ+fr/Xr1/fQT4BohRvr5uZm3XfffRozZowGDBig3Nxcff/739dnn30W9pzPP/980Gu9qamph38ahBPpul6wYEGHMZs0aVLE83Jd20+ksQ52fTocDj388MMhz8l1bU8PPPCAzjnnHGVkZCgnJ0eXXXaZ9u/fH9CG9+zkEGmsE+09m1AeB9/85jfl9Xr9//bu3RuybXV1tb797W/r/PPPV0VFhX7605/qtttu09q1a+PYY3TGzp07A8Z506ZNkqTvfe97YY/bv39/wHFnnnlmPLqLGBw9elRjx47Vk08+GfT5hx56SI899piefPJJ7dy5U263W9OnT1djY2PIc27fvl1z587VvHnz9O6772revHm66qqr9Pbbb/fUj4EohBvrY8eOaffu3fr5z3+u3bt3a926dTpw4IAuvfTSiOfNzMwMuM69Xq+cTmdP/AiIUqTrWpKKiooCxuyVV14Je06ua3uKNNbtr83nnntODodDV155Zdjzcl3bz9atW3XzzTdrx44d2rRpk7766ivNmDFDR48e9bfhPTs5RBrrhHvPNuhRxcXFZuzYsVG3v/fee82oUaMCHvvRj35kJk2a1M09Q0+7/fbbzYgRI0xra2vQ57ds2WIkmSNHjsS3Y+gSSWb9+vX+71tbW43b7TbLly/3P9bU1GRcLpd5+umnQ57nqquuMkVFRQGPzZw501x99dXd3md0TvuxDqa8vNxIMp988knINqtWrTIul6t7O4duFWys58+fb+bMmRPTebiu7S+a63rOnDnmoosuCtuG6zox1NbWGklm69atxhjes5NZ+7EOxs7v2cyUx8EHH3yg3Nxc5eXl6eqrr9ZHH30Usu327ds1Y8aMgMdmzpypXbt2qbm5uae7im5y4sQJrVmzRjfccIMcDkfYtmeffbY8Ho8uvvhibdmyJU49RHeprq5WTU1NwHWbnp6u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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 454
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.458923Z",
     "start_time": "2025-03-28T09:14:39.397528Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig, ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(np.arange(iters), cost, 'r')\n",
    "ax.set_xlabel('Iterations')\n",
    "ax.set_ylabel('Cost')\n",
    "ax.set_title('Error vs. Training Epoch')\n",
    "plt.show()"
   ],
   "id": "bca4b5c0bc52f07a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 455
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.491158Z",
     "start_time": "2025-03-28T09:14:39.476040Z"
    }
   },
   "cell_type": "code",
   "source": [
    "path =  'ex1data2.txt'\n",
    "data2 = pd.read_csv(path, header=None, names=['Size', 'Bedrooms', 'Price'])\n",
    "data2.head()"
   ],
   "id": "46fb6a0cb0d1cd0f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   Size  Bedrooms   Price\n",
       "0  2104         3  399900\n",
       "1  1600         3  329900\n",
       "2  2400         3  369000\n",
       "3  1416         2  232000\n",
       "4  3000         4  539900"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Size</th>\n",
       "      <th>Bedrooms</th>\n",
       "      <th>Price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2104</td>\n",
       "      <td>3</td>\n",
       "      <td>399900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1600</td>\n",
       "      <td>3</td>\n",
       "      <td>329900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2400</td>\n",
       "      <td>3</td>\n",
       "      <td>369000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1416</td>\n",
       "      <td>2</td>\n",
       "      <td>232000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3000</td>\n",
       "      <td>4</td>\n",
       "      <td>539900</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 456,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 456
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.554173Z",
     "start_time": "2025-03-28T09:14:39.538565Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data2 = (data2 - data2.mean()) / data2.std()\n",
    "data2.head()"
   ],
   "id": "d3fdf78cbb91f38c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "       Size  Bedrooms     Price\n",
       "0  0.130010 -0.223675  0.475747\n",
       "1 -0.504190 -0.223675 -0.084074\n",
       "2  0.502476 -0.223675  0.228626\n",
       "3 -0.735723 -1.537767 -0.867025\n",
       "4  1.257476  1.090417  1.595389"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Size</th>\n",
       "      <th>Bedrooms</th>\n",
       "      <th>Price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.130010</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>0.475747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.504190</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>-0.084074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.502476</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>0.228626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.735723</td>\n",
       "      <td>-1.537767</td>\n",
       "      <td>-0.867025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.257476</td>\n",
       "      <td>1.090417</td>\n",
       "      <td>1.595389</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 457,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 457
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.663339Z",
     "start_time": "2025-03-28T09:14:39.618033Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# add ones column\n",
    "data2.insert(0, 'Ones', 1)\n",
    "\n",
    "# set X (training data) and y (target variable)\n",
    "cols = data2.shape[1]\n",
    "X2 = data2.iloc[:,0:cols-1]\n",
    "y2 = data2.iloc[:,cols-1:cols]\n",
    "\n",
    "# convert to matrices and initialize theta\n",
    "X2 = np.matrix(X2.values)\n",
    "y2 = np.matrix(y2.values)\n",
    "theta2 = np.matrix(np.array([0,0,0]))\n",
    "\n",
    "# perform linear regression on the data set\n",
    "g2, cost2 = gradientDescent(X2, y2, theta2, alpha, iters)\n",
    "\n",
    "# get the cost (error) of the model\n",
    "computeCost(X2, y2, g2)"
   ],
   "id": "202b86e5ba0c93a6",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.13070336960771892"
      ]
     },
     "execution_count": 458,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 458
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.757351Z",
     "start_time": "2025-03-28T09:14:39.695164Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig, ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(np.arange(iters), cost2, 'r')\n",
    "ax.set_xlabel('Iterations')\n",
    "ax.set_ylabel('Cost')\n",
    "ax.set_title('Error vs. Training Epoch')\n",
    "plt.show()"
   ],
   "id": "8ae9526afa8af252",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAK7CAYAAABRQrQoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgYUlEQVR4nO3deXwV1f3/8ffNHpBc9gQkhrAH2SRsCUXciIBYqW2NC4tLq/gVS8RWRagCViO2IgUBpQtxhdiKShWQqMgiiBATXEDFBYOQyJ6ELYFkfn/MLxcuCZB97sx9PR+Peczcc+fO/Uych/q+58wZl2EYhgAAAAAAgC0EWF0AAAAAAACoPII8AAAAAAA2QpAHAAAAAMBGCPIAAAAAANgIQR4AAAAAABshyAMAAAAAYCMEeQAAAAAAbIQgDwAAAACAjRDkAQAAAACwEYI8AMBR0tLS5HK5zrp8+OGHVpfoE871N6rNv9fUqVPlcrmq9dkPP/zQsn9mZd99tiUtLa3eazqTy+XS+PHjrS4DAGCBIKsLAACgLixcuFBdunQp1961a1cLqvE9GzZs8Hr92GOPadWqVfrggw+82mv69/rd736noUOHVuuzvXv31oYNGyz9Z/bEE0/o8ssvL9fevn17C6oBAMBEkAcAOFK3bt3Up0+fKn3GMAwdP35c4eHh5d47duyYwsLCqt27LElHjx5VgwYNqv352jRgwACv1y1atFBAQEC59jNV9RzatGmjNm3aVKvGiIiI89ZT1zp27Gh5DQAAnImh9QAAv1U2NPm5555TXFycQkND9cILL3iG569cuVK33367WrRooQYNGqioqEilpaV66qmn1KVLF4WGhqply5YaM2aMfvrpJ69jX3bZZerWrZvWrFmjxMRENWjQQLfffnuFdcyaNUsul0vffvttufcefPBBhYSEaN++fZKkrKwsjRgxQi1btlRoaKhat26ta665ptz314ZznUN6erqSkpLUqlUrhYeHKy4uTg899JCOHDnidYyKhta3bdtWI0aM0IoVK9S7d2+Fh4erS5cu+ve//+21X0VD62+99VZdcMEF+vbbbzV8+HBdcMEFio6O1v3336+ioiKvz//000/6zW9+o0aNGqlx48a65ZZbtGnTplofGl92Pm+88YZ69OihsLAwtWvXTrNnzy63b05OjkaNGuX55xcXF6enn35apaWl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1QUAAAB7KC4uVkhISLU/36JFi1qsBgAA/0WPPAAADnbrrbdq9erV+vvf/y6XyyWXy6UdO3ZIkrZu3arhw4frggsuUGRkpEaPHq19+/Z5PnvZZZdp/Pjxmjhxopo3b64hQ4ZIkmbOnKnu3burYcOGio6O1v/93//p8OHDkqQPP/xQt912m/Lz8z3fN3XqVEnlh9bn5OTouuuu0wUXXKCIiAjdcMMN+vnnnz3vT506Vb169dJLL72ktm3byu1268Ybb1RhYaFnn//+97/q3r27wsPD1axZM1111VU6cuRIHf01AQDwDQR5AAAc7O9//7sSEhL0+9//Xrm5ucrNzVV0dLRyc3M1ePBg9erVS5s3b9aKFSv0888/64YbbvD6/AsvvKCgoCB99NFHev755yVJAQEBmj17tr744gu98MIL+uCDD/TAAw9IkhITEzVr1ixFRER4vu+Pf/xjuboMw9DIkSN14MABrV69WhkZGfruu++UnJzstd93332nN998U2+//bbefvttrV69Wk8++aQkKTc3VzfddJNuv/12bdu2TR9++KGuv/56GYZRF39KAAB8BkPrAQBwMLfbrZCQEDVo0EBRUVGe9vnz56t379564oknPG3//ve/FR0drW+++UadOnWSJHXo0EFPPfWU1zFPv98+NjZWjz32mO6++27NmzdPISEhcrvdcrlcXt93pvfee0+fffaZfvjhB0VHR0uSXnrpJV188cXatGmT+vbtK0kqLS1VWlqaGjVqJEkaPXq03n//fT3++OPKzc3VyZMndf311ysmJkaS1L179xr8tQAAsAd65AEA8EOZmZlatWqVLrjgAs/SpUsXSWYveJk+ffqU++yqVas0ZMgQXXjhhWrUqJHGjBmj/fv3V2lI+7Zt2xQdHe0J8ZLUtWtXNW7cWNu2bfO0tW3b1hPiJalVq1bas2ePJKlnz5668sor1b17d/32t7/VP/7xDx08eLDyfwQAAGyKIA8AgB8qLS3Vtddeq+zsbK9l+/btuvTSSz37NWzY0OtzP/74o4YPH65u3brp9ddfV2ZmpubOnStJOnHiRKW/3zAMuVyu87YHBwd7ve9yuVRaWipJCgwMVEZGhpYvX66uXbtqzpw56ty5s3744YdK1wEAgB0R5AEAcLiQkBCVlJR4tfXu3Vtffvml2rZtqw4dOngtZ4b3023evFknT57U008/rQEDBqhTp07avXv3eb/vTF27dlVOTo527tzpadu6davy8/MVFxdX6XNzuVwaOHCgpk2bpqysLIWEhOiNN96o9OcBALAjgjwAAA7Xtm1bbdy4UTt27NC+fftUWlqqe+65RwcOHNBNN92kTz75RN9//71Wrlyp22+//ZwhvH379jp58qTmzJmj77//Xi+99JKee+65ct93+PBhvf/++9q3b5+OHj1a7jhXXXWVevTooVtuuUWffvqpPvnkE40ZM0aDBw+ucDh/RTZu3KgnnnhCmzdvVk5OjpYsWaK9e/dW6YcAAADsiCAPAIDD/fGPf1RgYKC6du2qFi1aKCcnR61bt9ZHH32kkpISXX311erWrZsmTJggt9utgICz/+9Br169NHPmTM2YMUPdunXTK6+8otTUVK99EhMTNW7cOCUnJ6tFixblJsuTzJ70N998U02aNNGll16qq666Su3atVN6enqlzysiIkJr1qzR8OHD1alTJ02ZMkVPP/20hg0bVvk/DgAANuQyeEYLAAAAAAC2QY88AAAAAAA2QpAHAAAAAMBGCPIAAAAAANgIQR4AAAAAABshyAMAAAAAYCMEeQAAAAAAbIQgDwAAAACAjRDkAQAAAACwEYI8AAAAAAA2QpAHAAAAAMBGCPIAAAAAANjI/wNE2Wt2rjY+ZAAAAABJRU5ErkJggg==\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 459
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-28T09:14:39.788679Z",
     "start_time": "2025-03-28T09:14:39.767858Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "model = LinearRegression()\n",
    "model.fit(X, y.ravel())"
   ],
   "id": "2f44c8ce0f9dffce",
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "np.matrix is not supported. Please convert to a numpy array with np.asarray. For more information see: https://numpy.org/doc/stable/reference/generated/numpy.matrix.html",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mTypeError\u001B[0m                                 Traceback (most recent call last)",
      "\u001B[1;32m~\\AppData\\Local\\Temp\\ipykernel_5476\\3471871500.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m      2\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      3\u001B[0m \u001B[0mmodel\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mLinearRegression\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 4\u001B[1;33m \u001B[0mmodel\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfit\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0my\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mravel\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m",
      "\u001B[1;32m~\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\base.py\u001B[0m in \u001B[0;36mwrapper\u001B[1;34m(estimator, *args, **kwargs)\u001B[0m\n\u001B[0;32m   1387\u001B[0m                 )\n\u001B[0;32m   1388\u001B[0m             ):\n\u001B[1;32m-> 1389\u001B[1;33m                 \u001B[1;32mreturn\u001B[0m \u001B[0mfit_method\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mestimator\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m*\u001B[0m\u001B[0margs\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m   1390\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   1391\u001B[0m         \u001B[1;32mreturn\u001B[0m \u001B[0mwrapper\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\linear_model\\_base.py\u001B[0m in \u001B[0;36mfit\u001B[1;34m(self, X, y, sample_weight)\u001B[0m\n\u001B[0;32m    599\u001B[0m         \u001B[0maccept_sparse\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mFalse\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpositive\u001B[0m \u001B[1;32melse\u001B[0m \u001B[1;33m[\u001B[0m\u001B[1;34m\"csr\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"csc\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"coo\"\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    600\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 601\u001B[1;33m         X, y = validate_data(\n\u001B[0m\u001B[0;32m    602\u001B[0m             \u001B[0mself\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    603\u001B[0m             \u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\utils\\validation.py\u001B[0m in \u001B[0;36mvalidate_data\u001B[1;34m(_estimator, X, y, reset, validate_separately, skip_check_array, **check_params)\u001B[0m\n\u001B[0;32m   2959\u001B[0m             \u001B[0my\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mcheck_array\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0my\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0minput_name\u001B[0m\u001B[1;33m=\u001B[0m\u001B[1;34m\"y\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mcheck_y_params\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   2960\u001B[0m         \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 2961\u001B[1;33m             \u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0my\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mcheck_X_y\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0my\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mcheck_params\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m   2962\u001B[0m         \u001B[0mout\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0my\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   2963\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\utils\\validation.py\u001B[0m in \u001B[0;36mcheck_X_y\u001B[1;34m(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_writeable, force_all_finite, ensure_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)\u001B[0m\n\u001B[0;32m   1368\u001B[0m     \u001B[0mensure_all_finite\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0m_deprecate_force_all_finite\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mforce_all_finite\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mensure_all_finite\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   1369\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 1370\u001B[1;33m     X = check_array(\n\u001B[0m\u001B[0;32m   1371\u001B[0m         \u001B[0mX\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   1372\u001B[0m         \u001B[0maccept_sparse\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0maccept_sparse\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\utils\\validation.py\u001B[0m in \u001B[0;36mcheck_array\u001B[1;34m(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_writeable, force_all_finite, ensure_all_finite, ensure_non_negative, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator, input_name)\u001B[0m\n\u001B[0;32m    883\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    884\u001B[0m     \u001B[1;32mif\u001B[0m \u001B[0misinstance\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0marray\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mnp\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mmatrix\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 885\u001B[1;33m         raise TypeError(\n\u001B[0m\u001B[0;32m    886\u001B[0m             \u001B[1;34m\"np.matrix is not supported. Please convert to a numpy array with \"\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    887\u001B[0m             \u001B[1;34m\"np.asarray. For more information see: \"\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;31mTypeError\u001B[0m: np.matrix is not supported. Please convert to a numpy array with np.asarray. For more information see: https://numpy.org/doc/stable/reference/generated/numpy.matrix.html"
     ]
    }
   ],
   "execution_count": 460
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
